-1

如果我有以下字符串:“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”

我究竟做错了什么?

4

3 回答 3

6

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

(space)brazil(space)不只是brazil

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

于 2012-07-26T13:27:47.650 回答
0

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

于 2012-07-26T13:27:51.173 回答
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);
于 2012-07-26T13:35:12.273 回答