如何搜索整个单词,而不仅仅是PHP的子字符串

时间:2012-07-26 13:23:41

标签: php

如果我有以下字符串:“brasil”和“brasil-carinhoso”,我想只替换“brasil”,但如果它直接跟随其他字符则不能。

所以,如果我有这个列表:“pac pac pac brasil brasil-carinhoso pac brasil”,如果我尝试使用以下代码,则会失败:

//$_GET['exclusion_tags'] is 'brazil'
//$tags_maior is the string: "pac pac pac brasil brasil-carinhoso pac brasil" 
$tags_maior = preg_replace('/\b'.$_GET['exclusion_tags'].'\b/u', "", $tags_maior);

当我像这样使用str_replace或preg_replace时,我得到“pac pac pac -carinhoso pac”,我需要得到“pac pac pac brasil-carinhoso pac”

我做错了什么?

3 个答案:

答案 0 :(得分:7)

你的问题与你的正则表达式有关。你需要在单词之前和之后选择一个带空格的单词。

(space)brazil(space)brazil

不同

你现在必须问一个问题:“如何编写一个正则表达式来搜索一个既有前导空格又有尾随空格的单词?”

答案 1 :(得分:0)

您没有正确设置preg_replace()。您的字符串需要标识要替换的内容,并且只有在查询之前和之后有空格时才替换它。我希望我能提供更多帮助,但我并不精通正则表达式。运气不错,有人会编辑这篇文章或为你想要的查询提供一个正则表达式解决方案。

答案 2 :(得分:0)

试试这个......

$_GET['exclusion_tags'] = 'brazil';
$tags_maior = "pac pac pac brazil brazil-carinhoso pac brazil";
$tags_maior = trim(str_replace(" ".$_GET['exclusion_tags']." ", " ", " ".$tags_maior." "));

var_dump($tags_maior);