ホームページ >バックエンド開発 >PHPチュートリアル >正規表現の一致には特殊文字が含まれています

正規表現の一致には特殊文字が含まれています

WBOY
WBOYオリジナル
2016-08-04 09:19:401599ブラウズ

リーリー

の各文字列エスケープをループしますか? $info数组,为其每一个字符串前后加上/^$/ ,变成一个正则表达式,去匹配提供的$message,但是因为$info里面的字符串可能有特殊字符,造成出错,所以请问有没有什么办法把$info

を定義するときのみ

をエスケープできますか? $info

返信内容:

リーリー

の各文字列エスケープをループしますか?

$info数组,为其每一个字符串前后加上/^$/ ,变成一个正则表达式,去匹配提供的$message,但是因为$info里面的字符串可能有特殊字符,造成出错,所以请问有没有什么办法把$infoを定義するときのみ

をエスケープできますか?

$info

逃げられない。

/在正则表达式里面有特殊含义,所以后面的'/'就会出错,你需要在前面加上反斜杠

$preg は定義されていますが、$info が使用されています。これは間違いです。

また、通常のワイルドカードは

でエスケープする必要があります。
上の例は のように書き換える必要があります。 リーリー

やりたいことを直接言ったほうがいいと思います、あなたの考えは間違っている気がします。

$preg は未知の変数です

前提が大きすぎます

これらの式がプログラマーによって入力されたものである場合、それはプログラマーの問題です。

これらの表現がユーザーによって入力された場合、ユーザーが注意を払うことができるように、これらが正規表現であることを入力インターフェイスでユーザーに通知する必要があります。

js を使用して正規表現の特殊文字をエスケープできますが、二重エスケープが発生する可能性があります (たとえば、ユーザーは最初にエスケープされたコンテンツ http:|b4831e42daf1db770cdbc01d41578e020|/.+ を入力しました)

リーリー
また、プログラム中に無理に/^や$/を付け加えても問題が発生する可能性があります。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。