如果我有以下字符串:"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);