Самым большим изменением синтаксиса является добавление разделителей.
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
person
Community
schedule
07.06.2011
ereg [php]
не дает очень полезных результатов. Хорошо, могу поддержать это. - person Wrikken   schedule 07.06.2011