通常の PHP
たとえば、これら 2 つのコードは文字列内の URL リンクと一致します
これはパターン修飾子 e を使用しています:
$urlPattern = "/(www.|https?://|ftp:/ / |news://|telnet://){1}([^["']+?)(com|net|org)(/[w-./?%&=]*)?/ei" ;
$url="PHP のアドレスは次のとおりです: www.php.com";
echo preg_replace($urlPattern, "'\2'.'\3'", $url);修飾子 e:
$urlPattern = "/(www.|https?://|ftp://|news://|telnet://){1}([^["']+?) (com |net|org)(/[w-./?%&=]*)?/i";
$url="PHP のアドレスは www.php.com";
echo preg_replace($ urlPattern, ' \2'.'\3', $url);
出力結果は同じです~
どちらも www.php.com を php.com に置き換えます
二重引用符の追加レイヤーだと思います 以上です。 .
でも、e を使わないほうが簡単な気がします
この e はどうなっているのでしょうか?
ディスカッションへの返信 (解決策)
e (PREG_REPLACE_EVAL)
この修飾子が設定されている場合、preg_replace() は、置換文字列に対して後方参照置換を実行した後、置換文字列を PHP コードとして評価します (eval 関数モード)。を実行し、実際に置換に関与する文字列として実行結果を使用します。一重引用符、二重引用符、バックスラッシュ()、および NULL 文字は、後方参照置換中にバックスラッシュでエスケープされます。