2010-12-04 35 views
2

J'ai appris PHP depuis quelque temps maintenant et je voulais une clarification.Débutant PHP besoin d'aide

Je l'ai vu la fonction preg_match appelé avec des symboles comme délimiteurs:

preg_match('/.../') 

et

preg_match('#...#') 

Aujourd'hui, j'ai vu aussi % utilisé.

Ma question est en deux parties:

Ce que tous les caractères peuvent être utilisés?

Et y a-t-il un standard?

+1

il est juste une question de goût . –

Répondre

4

Tout

  • non alphanumérique
  • non-espaces et
  • caractère ASCII non backslash

peut être utilisé comme séparateur.

Aussi, si vous en utilisant les ouverture symboles de ponctuation comme séparateur d'ouverture:

({ [ < 

alors leur fermeture symboles de ponctuation correspondant doit être utilisé comme séparateur de fermeture:

) } ] > 

Le plus commun le délimiteur est /.
Mais il est parfois conseillé d'utiliser un délimiteur différent si / fait partie de la regex.

Exemple:

// check if a string is number/number format: 
if(preg_match(/^\d+\/\d+$/)) { 
    // match 
} 

Depuis le délimiteur contient regex, vous devez échapper le délimiteur trouvé dans le regex.

Pour éviter l'échappement, il est préférable de choisir un délimiteur différent, celui qui ne figure pas dans l'expression régulière, de cette façon votre regex sera plus court et plus propre :

if(preg_match(#^\d+/\d+$#)) 
+0

Juste pour ajouter: si vous n'utilisez pas les symboles de ponctuation d'ouverture/fermeture, alors le premier caractère de votre expression doit être le même que le dernier caractère, sinon vous obtenez une erreur. –

+0

Merci de le préciser. – vist520