Самым большим изменением в синтаксисе является добавление разделителей .
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 поддерживает модификаторы для различных вещей. Одним из наиболее часто используемых является регистрозависимый модификатор i
, альтернатива eregi :
eregi('^hello', 'HELLO');
preg_match('/^hello/i', 'HELLO');
Вы можете найти полную ссылку на синтаксис PCRE в PHP в руководстве , а также список отличий между регулярным выражением POSIX и PCRE, чтобы помочь преобразовать выражение.
Однако в вашем простом примере вы бы не использовали регулярное выражение:
stripos($str, 'hello world') === 0