1. ホーム
  2. php

[解決済み] PHPでereg式をpregに変換するにはどうしたらいいですか?

2022-05-11 11:24:05

質問

以来 POSIX正規表現(ereg) は PHP 5.3.0 以降では非推奨となっています。 PCRE (Perl互換正規表現) (preg) .

例として、こんな正規表現があります。

eregi('^hello world');

への表現の変換はどうすればよいのでしょうか? preg_match 互換性のある表現を教えてください。

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

関連する

解決方法は?

構文上の最大の変更点は デリミタ .

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);

文字列中のすべての区切り文字や予約文字を簡単にエスケープすることができます。 preg_quote :

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

また、PCREは モディファイア を様々なものに使用することができます。最もよく使われるものの1つは、大文字小文字を区別しないモディファイアである i の代替となる 電子 :

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

の完全なリファレンスを見つけることができます。 PHP の PCRE 構文については、マニュアルを参照してください。 と同様に 相違点一覧 POSIX regex と PCRE の間で、式の変換を助けるために使用します。

しかし、あなたの簡単な例では、正規表現を使うことはないでしょう。

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