2

私は正規表現の初心者であり、この単純な疑問があります。

私はワードプレスでこのコードを見つけました

$self = preg_replace('|^.*/wp-admin/|i', '', $self); 

php.net のドキュメントによると、|区切り文字としては許可されていません。

誰かがコードを説明できますか?

4

1 に答える 1

3

試しましたか?

あなたのリンクから:

PCRE関数を使用する場合は、パターンを区切り文字で囲む必要があります。区切り文字には、英数字、円記号、空白以外の任意の文字を使用できます。

完全|に有効な区切り文字です。そのページのコメントを読むとき|、正規表現内で使用する必要がある場合は、区切り文字としてメタ文字(など)を使用しないことをお勧めします。

あなたの例$self = preg_replace('|^.*/wp-admin/|i', '', $self);には変更がないので問題はなく、期待どおりに機能しています。

正規表現に代替がある場合(たとえばpreg_match("|(F|f)oo|", "Foobar"))、インタプリタは正規表現が最初の代替で終了すると考えるため、「不明な修飾子'f'」という警告が表示されます。

結論:許可されていますが、、、、 ...など|の正規表現メタ文字を正規表現区切り文字として使用することはお勧めしません。^+

于 2012-05-04T21:42:35.420 に答える