Php 从字符串中删除单词
我有一个包含公司名称的csv文件。我想把它和我的数据库匹配起来。为了有一个更干净和更接近的比赛,我正在考虑取消一些公司后缀,如'inc','inc','inc','inc'或''inc'。以下是我的示例代码:Php 从字符串中删除单词,php,string-matching,Php,String Matching,我有一个包含公司名称的csv文件。我想把它和我的数据库匹配起来。为了有一个更干净和更接近的比赛,我正在考虑取消一些公司后缀,如'inc','inc','inc','inc'或''inc'。以下是我的示例代码: $string = 'Inc Incorporated inc.'; $wordlist = array("Inc","inc."," Inc.",", Inc.",", Inc"," Inc"); foreach ($wordlist as &$word) { $wor
$string = 'Inc Incorporated inc.';
$wordlist = array("Inc","inc."," Inc.",", Inc.",", Inc"," Inc");
foreach ($wordlist as &$word) {
$word = '/\b' . preg_quote($word, '/') . '\b/';
}
$string = preg_replace($wordlist, '', $string);
$foo = preg_replace('/\s+/', ' ', $string);
echo $foo;
我的问题是“公司”没有被删除。我猜这和preq_的报价有关。但我就是不知道怎么解决这个问题。你可以用这个
$string = 'Inc Incorporated inc.';
$wordlist = array("Inc "," inc.");
$foo = str_replace($wordlist, '', $string);
echo $foo;
运行此代码尝试以下操作:
$string = 'Inc incorporated inc.';
$wordlist = array("Inc","inc.");
foreach ($wordlist as $word) {
$string =str_replace($word, '', $string);
}
echo $string;
或
这将输出为“公司化”
如果你想“合并”为结果,请使“I”变小。。然后运行我上面的代码(第一个) 试试这个。它可能会在某一点上涉及到打字杂耍,但会有你想要的结果
$string = 'Inc Incorporated inc.';
$wordlist = array('Inc', 'inc.');
$string_array = explode(' ', $string);
foreach($string_array as $k => $a) {
foreach($wordlist as $b) {
if($b == $a){
unset($string_array[$k]);
}
}
$string_array = implode('', $string_array);
这将适用于数组中任意数量的元素
$string = 'Inc Incorporated inc.';
$wordlist = array("Inc");
foreach($wordlist as $stripped)
$string = preg_replace("/\b". preg_quote($stripped,'/') ."(\.|\b)/i", " ", $string) ;
$foo = preg_replace('/\s+/', ' ', $string);
echo $foo;
如果你想要“合并”结果,就把“I”变小。。然后运行我上面的代码(第一个)…嗨@Tushar Gupta,它输出“orporated”。我应该告诉你,$wordlist是由许多后缀组成的。其中之一是“公司”。因此,它仍然会返回“orporated”。@user3360031请看我已经放置了代码输出的屏幕截图,它完成了这项工作。谢谢
$string = 'Inc Incorporated inc.';
$wordlist = array("Inc");
foreach($wordlist as $stripped)
$string = preg_replace("/\b". preg_quote($stripped,'/') ."(\.|\b)/i", " ", $string) ;
$foo = preg_replace('/\s+/', ' ', $string);
echo $foo;