2014-09-26 512 views
0

我有一個包含公司名稱的csv文件。我想將其與我的數據庫相匹配。爲了有一個更清潔和更接近的匹配,我想消除一些公司後綴,如'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; 

我的問題在於'inc。'不會被刪除。我猜它與preq_quote有關。但我無法弄清楚如何解決這個問題。

回答

0

試試這個。它可能在某些時候涉及式雜耍,但將有你想要的結果

$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); 
+0

這做的工作。謝謝。 – user3360031 2014-09-29 02:23:11

+0

不用擔心! :) – 2014-09-29 03:23:59

0

enter image description here您可以使用此

$string = 'Inc Incorporated inc.'; 
$wordlist = array("Inc "," inc."); 
$foo = str_replace($wordlist, '', $string); 
echo $foo; 

運行這段代碼here

+0

嗨@Tushar古普塔,它輸出「orporated 」。它應該得到整個公司。 – user3360031 2014-09-26 08:00:05

+0

現在執行代碼@ user3360031 – Tushar 2014-09-26 08:02:37

+0

我應該告訴你$ wordlist是由許多後綴組成的。其中之一是'Inc'。所以它仍然會返回'orporated'。 – user3360031 2014-09-26 08:08:14

1

試試這個:

$string = 'Inc incorporated inc.'; 
$wordlist = array("Inc","inc."); 

foreach ($wordlist as $word) { 
    $string =str_replace($word, '', $string); 
} 
echo $string; 

OR

$string = 'Inc Incorporated inc.'; 
$wordlist = array("Inc","inc."); 
$string = str_replace($wordlist, '', $string); 
echo $string; 

這將輸出作爲「corporated」 ......

如果你想「收編」的結果,使「我」是小..而不是運行我上面的代碼(第一個)......

+0

這將回顯'orporated' – hsan 2014-09-26 07:58:34

+0

是的,因爲它會在Incorporated中找到「Inc」以及... – DeDevelopers 2014-09-26 07:59:39

+0

如果您希望「合併」爲結果,使「我」小..比運行我的上面的代碼(第一個)... – DeDevelopers 2014-09-26 08:01:56

0

這將爲任意數量的數組元素的工作...

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