Le plus grand changement dans la syntaxe est l'ajout de la fonction délimiteurs .
ereg('^hello', $str);
preg_match('/^hello/', $str);
Les délimiteurs peuvent être à peu près tout ce qui n'est pas alphanumérique, une barre oblique inversée ou un caractère d'espacement. Les plus utilisés sont généralement ~
, /
y #
.
Vous pouvez également utiliser des parenthèses assorties :
preg_match('[^hello]', $str);
preg_match('(^hello)', $str);
preg_match('{^hello}', $str);
// etc
Si votre délimiteur est trouvé dans l'expression régulière, vous devez l'échapper :
ereg('^/hello', $str);
preg_match('/^\/hello/', $str);
Vous pouvez facilement échapper à tous les délimiteurs et caractères réservés d'une chaîne de caractères en utilisant la commande preg_quote :
$expr = preg_quote('/hello', '/');
preg_match('/^'.$expr.'/', $str);
De plus, PCRE supporte modificateurs pour diverses choses. L'un des plus utilisés est le modificateur insensible à la casse i
l'alternative à eregi :
eregi('^hello', 'HELLO');
preg_match('/^hello/i', 'HELLO');
Vous pouvez trouver la référence complète à Syntaxe PCRE en PHP dans le manuel ainsi qu'un liste des différences entre POSIX regex et PCRE pour aider à convertir l'expression.
Toutefois, dans votre exemple simple, vous n'utiliseriez pas d'expression régulière :
stripos($str, 'hello world') === 0
2 votes
@yes123 : Oui, c'est le problème, j'en suis aussi fatigué. Je veux un post wiki qui explique réellement quelque chose afin que nous puissions fermer toutes ces questions individuelles.
0 votes
Je pense que ce n'est pas nécessaire car il suffit d'entourer l'ancien avec un délimiteur. Je pense également que vous auriez pu utiliser une question à laquelle vous avez déjà répondu pour cela.
0 votes
Ah, j'ai voté pour une fermeture avant de lire les commentaires. En tant qu'espace réservé, il pourrait servir à quelque chose, mais n'y a-t-il pas une autre question plus ancienne qui aurait pu servir à cela ?
0 votes
Hmm, en effet.
ereg [php]
ne donne pas beaucoup de résultats utiles. OK, je peux apporter mon soutien à ce projet.0 votes
@netcoder : en fait, je pense avoir répondu à presque tout ici : stackoverflow.com/questions/6269693/ pas pour se vanter bien sûr
8 votes
Les amis, il semble que nous ayons presque créé un cercle de questions fermées sur ce sujet, toutes pointées les unes vers les autres. A ce rythme, elles seront toutes fermées :)