PHP で ereg 式を preg 式に変換するにはどうすればいいですか? 質問する

PHP で ereg 式を preg 式に変換するにはどうすればいいですか? 質問する

以来POSIX 正規表現 (ereg)PHP 5.3.0以降は非推奨となっていますが、古い表現を新しい表現に変換する簡単な方法を知りたいです。PCRE (Perl 互換正規表現) (preg)

たとえば、次のような正規表現があります。

eregi('^hello world');

表現をpreg_match互換性のある表現に変換するにはどうすればよいですか?

注記:この投稿は、排卵誘発から妊娠への変換に関連するすべての投稿のプレースホルダーとして、また関連する質問の重複オプションとして機能します。この質問を閉じないでください。

関連している:

ベストアンサー1

構文上の最大の変更点は、区切り文字

ereg('^hello', $str);
preg_match('/^hello/', $str);

区切り文字には、英数字、バックスラッシュ、空白文字以外のほとんどすべての文字を使用できます。最もよく使用されるのは、一般に~、、/およびです#

対応する括弧を使用することもできます:

preg_match('[^hello]', $str);
preg_match('(^hello)', $str);
preg_match('{^hello}', $str);
// etc

正規表現内に区切り文字が見つかった場合は、エスケープする必要があります。

ereg('^/hello', $str);
preg_match('/^\/hello/', $str);

文字列内のすべての区切り文字と予約文字を簡単にエスケープするには、引用:

$expr = preg_quote('/hello', '/');
preg_match('/^'.$expr.'/', $str);

また、PCREは修飾子さまざまな用途に使用できます。最もよく使用されるのは、大文字と小文字を区別しない修飾子iで、これはエレギ:

eregi('^hello', 'HELLO');
preg_match('/^hello/i', 'HELLO');

完全な参考文献は以下をご覧ください。マニュアルのPHPのPCRE構文、そして相違点のリストPOSIX 正規表現と PCRE を相互に変換して、表現の変換を容易にします。

ただし、単純な例では正規表現は使用しません。

stripos($str, 'hello world') === 0

おすすめ記事