33 Voix

PHP: Échapper ou Masquer les Caractères RegEx dans une Chaîne / String

Question de Compi | 01/04/2021 à 13:12

J'ai une chaîne / string arbitraire que je souhaite utiliser dans une expression régulière. Lors du test de certaines chaînes, je viens de dire que les expressions ne fonctionnent correctement que lorsque la chaîne ne contient pas certains caractères.

Par exemple, cela n'est pas possible lorsque la chaîne contient un point ou un signe plus. Cependant, lors de l'écriture de \. ou \+ au lieu de la période pure ou plus, encore une fois cela fonctionne. Je pense que vous appelez cela échapper ou masquer les caractères correspondants.

Mais pourquoi est-ce ainsi? Et après tout, à quel genre de caractères faut-il échapper? Plus je travaille avec des expressions régulières, plus je rencontre de caractères pour lesquels cela semble nécessaire.

RépondrePositifNégatif
2Meilleure Réponse2 Voix

Certains caractères ont une signification particulière dans les expressions régulières. Par exemple, le point représente un caractère arbitraire, le signe plus une répétition. Afin de pouvoir distinguer les caractères spéciaux ayant une signification spéciale des caractères qui devraient être menacés en tant que tels caractères, vous devez marquer ces cas. Et cela peut être réalisé en ajoutant le caractère \.

Les caractères ayant une signification particulière dans les expressions régulières sont:

. \ + * ? [ ^ ] $ ( ) { } = ! < > | : -

Cependant, vous n'avez pas à écrire votre propre fonction de recherche et de remplacement pour chacun de ces caractères. Au lieu de cela, vous pouvez également simplement utiliser la fonction intégrée preg_quote() fournie par PHP, qui vous enlève tout le travail.

$txt = "ABC...";

$reg = "...";
$reg = '#'.preg_quote($reg).'#';

$txt = preg_replace($reg, 'DEF', $txt);

echo $txt;  // ABCDEF

Dans cet exemple, les points seuls ne fonctionneraient pas comme une expression régulière. Pour cette raison, nous utilisons preg_quote() et nous obtenons le résultat souhaité.
01/04/2021 à 20:50

RépondrePositif Négatif
Répondre

Sujets Connexes

VirtualBox: Changer la Date et l'Heure

Tutoriel | 10 Commentaires

Avis Important

Veuillez noter: Les contributions publiées sur askingbox.com sont des contributions d’utilisateurs et ne doivent pas remplacer les conseils d’un professionnel. Ils ne sont pas vérifiés par des indépendants et ne reflètent pas nécessairement l’opinion de askingbox.com. Apprendre encore plus.

Participer

Posez votre propre question ou écrivez votre propre article sur askingbox.com. Voici comment.