Php 从字符串中删除单词

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

我有一个包含公司名称的csv文件。我想把它和我的数据库匹配起来。为了有一个更干净和更接近的比赛,我正在考虑取消一些公司后缀,如'inc','inc','inc','inc'或''inc'。以下是我的示例代码:

$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;