構文の最大の変更点は、区切り記号の追加です。
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 はさまざまな修飾子をサポートしています。最もよく使用されるのは、eregii
の代替である、大文字と小文字を区別しない修飾子です。
eregi('^hello', 'HELLO');
preg_match('/^hello/i', 'HELLO');
PHP の PCRE 構文の完全なリファレンスは、マニュアルに記載されています。式の変換に役立つ POSIX 正規表現と PCREの相違点のリストもあります。
ただし、単純な例では、正規表現を使用しません。
stripos($str, 'hello world') === 0