2017-02-07 60 views
1

我需要一個句子中刪除一些話,但我想這個詞被刪除完全匹配......替換功能的字與陣列

這是我的代碼:

<?php 
function Clean ($text) { 
$array = array(
    'goo' => '', 
    'guu' => '', 
); 
return strtr($text, $array); 
} 

$OldText = "goo guu mygoo myguu gooyou guuyou"; 

$NewText = Clean($OldText); 

echo $NewText; 
?> 

我想這樣: mygoo myguu gooyou guuyou

PHP回報:我我你你

任何想法?非常感謝您提前!

+0

你想查看'preg_replace()',所以如果你的字符串只是字的一部分,你就不要刪除這個字。 – Rizier123

+0

@ Rizier123我一直在閱讀這個主題1小時,但我不能將它集成到我已有的功能中。你能幫我用一些代碼來整合它,而不會有太大的變化嗎? – GePraxa

回答

2

您可以使用preg_replace用字邊界,你不會得到部分匹配:

echo preg_replace('/\s*\b(goo|guu)\b\s*/', '', $OldText); 

演示:https://eval.in/731588

+0

非常感謝,這個作品!它不適合我當前的代碼,但它是解決問題的基礎! – GePraxa

0

這是我的完整的解決方案,我希望別人會竭誠爲您服務!

<?php 
function Clean ($text) { 
$array = array(
    '/\s*\b(goo)\b\s*/', 
    '/\s*\b(guu)\b\s*/', 
); 
return preg_replace($array,'', $text); 
} 

$OldText = "goo guu mygoo myguu gooyou guuyou"; 

echo Clean($OldText); 
?> 
+0

噢,只要使用'/ \ s * \ b(?:guu | goo)\ b \ s * /'',甚至更好的是'/ \ s * \ bg(?:oo | uu)\ b \ s * /''而不是'preg_replace'內的'$ array'。 –