2017-02-07 62 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'。 –