0

これは、文字列から?ajax = trueまたは&ajax = trueを削除するためのpreg_replace(正規表現)の正しい構文ですか?

echo preg_replace('/(\?|&)ajax=true/', '', $string);

たとえば、/ hello / hi?ajax=trueは/hello/ hiを与え、/ hello / hi?ajax=trueは/hello/hiを与えます。

脱出する必要がありますか?

4

2 に答える 2

1

やってみませんか?

「&」をエスケープする必要はありません。正規表現の特殊文字ではありません。

あなたの表現は機能しているはずです、それはあなたが使っている交互です。ただし、交互に文字が1つしかない場合は、文字クラスを使用すると読みやすくなります。

echo preg_replace('/[?&]ajax=true/', '', $string);

[?&]は文字クラスであり、角かっこで囲まれた文字のうち1文字に一致します。

于 2012-10-16T11:34:19.787 に答える
0

あなたの表現は大丈夫だと思います。(?i)を追加して、大文字を無視することができます。結果は次のようになります。

echo preg_replace('/(\?|&)(?i)ajax=true/', '', $string);
于 2012-10-16T10:57:20.090 に答える