-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 に答える