これは、文字列から?ajax = trueまたは&ajax = trueを削除するためのpreg_replace(正規表現)の正しい構文ですか?
echo preg_replace('/(\?|&)ajax=true/', '', $string);
たとえば、/ hello / hi?ajax=trueは/hello/ hiを与え、/ hello / hi?ajax=trueは/hello/hiを与えます。
脱出する必要がありますか?
やってみませんか?
「&」をエスケープする必要はありません。正規表現の特殊文字ではありません。
あなたの表現は機能しているはずです、それはあなたが使っている交互です。ただし、交互に文字が1つしかない場合は、文字クラスを使用すると読みやすくなります。
echo preg_replace('/[?&]ajax=true/', '', $string);
[?&]
は文字クラスであり、角かっこで囲まれた文字のうち1文字に一致します。
あなたの表現は大丈夫だと思います。(?i)を追加して、大文字を無視することができます。結果は次のようになります。
echo preg_replace('/(\?|&)(?i)ajax=true/', '', $string);