Самое большое изменение в синтаксисе - добавление разделителей .
ereg('^hello', $str);
preg_match('/^hello/', $str);
В качестве разделителей может использоваться что угодно, кроме буквенно-цифровых символов, обратной косой черты или символа пробела. Наиболее часто используемые , как правило ~
, /
и #
.
Вы также можете использовать соответствующие скобки:
preg_match('[^hello]', $str);
preg_match('(^hello)', $str);
preg_match('{^hello}', $str);
Если ваш разделитель находится в регулярном выражении, вы должны его избежать:
ereg('^/hello', $str);
preg_match('/^\/hello/', $str);
Вы можете легко избежать всех разделителей и зарезервированных символов в строке, используя preg_quote :
$expr = preg_quote('/hello', '/');
preg_match('/^'.$expr.'/', $str);
Кроме того, PCRE поддерживает модификаторы для разных вещей. Один из наиболее часто используемых - это модификатор без учета регистра i
, альтернатива eregi :
eregi('^hello', 'HELLO');
preg_match('/^hello/i', 'HELLO');
Вы можете найти полную ссылку на синтаксис PCRE в PHP в руководстве , а также список различий между регулярным выражением POSIX и PCRE, чтобы помочь преобразовать выражение.
Однако в вашем простом примере вы не будете использовать регулярное выражение:
stripos($str, 'hello world') === 0