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


How to search for a whole word, not just a substring with PHP

如果我有以下字符串:"brasil"answers"brasil-carinhoso",我只想替换"brasil",但如果它后面直接跟有其他字符,则不想替换。

因此,如果我有这个列表:"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-carinhoso pac",我需要得到"pac-pac-brasil carinhoso-pac"

我做错了什么?

问题出在正则表达式上。你需要选择一个前后有空格的单词。

(space)brazil(space)不同于仅brazil

您现在必须问这样一个问题:"如何编写一个正则表达式来搜索同时有前导空格和尾随空格的单词?"

您没有正确设置preg_replace()。字符串需要标识要替换的内容,并且只有在查询前后有空格的情况下才能替换。我希望我能提供更多帮助,但我不太精通正则表达式。如果运气好的话,有人会编辑这篇文章,或者为您想要的查询提供regex解决方案。

试试这个。。。

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