El mayor cambio en la sintaxis es la adición de delimitadores .
ereg('^hello', $str);
preg_match('/^hello/', $str);
Los delimitadores pueden ser prácticamente cualquier cosa que no sea alfanumérica, una barra diagonal inversa o un espacio en blanco. Los más utilizados son generalmente ~
, /
y #
.
También puede usar paréntesis a juego:
preg_match('[^hello]', $str);
preg_match('(^hello)', $str);
preg_match('{^hello}', $str);
// etc
Si su delimitador se encuentra en la expresión regular, debe escapar de él:
ereg('^/hello', $str);
preg_match('/^\/hello/', $str);
Puede escapar fácilmente de todos los delimitadores y caracteres reservados en una cadena utilizando preg_quote :
$expr = preg_quote('/hello', '/');
preg_match('/^'.$expr.'/', $str);
Además, PCRE admite modificadores para varias cosas. Uno de los más utilizados es el modificador sin distinción entre mayúsculas y minúsculas i
, la alternativa a eregi :
eregi('^hello', 'HELLO');
preg_match('/^hello/i', 'HELLO');
Puede encontrar la referencia completa a la sintaxis PCRE en PHP en el manual , así como una lista de diferencias entre la expresión regular POSIX y PCRE para ayudar a convertir la expresión.
Sin embargo, en su ejemplo simple no usaría una expresión regular:
stripos($str, 'hello world') === 0
ereg [php]
no produce resultados muy útiles. OK, puedo prestar mi apoyo a este.