Maison > développement back-end > tutoriel php > Comment puis-je extraire des sous-chaînes citées en PHP, en ignorant les guillemets échappés ?

Comment puis-je extraire des sous-chaînes citées en PHP, en ignorant les guillemets échappés ?

Barbara Streisand
Libérer: 2024-11-29 12:54:17
original
710 Les gens l'ont consulté

How Can I Extract Quoted Substrings in PHP, Ignoring Escaped Quotes?

Exclusion des guillemets échappés dans PHP Regex

En PHP, l'extraction de sous-chaînes entourées de guillemets simples ou doubles nécessite une attention particulière aux séquences d'échappement. Pour ignorer les guillemets échappés dans la chaîne correspondante, nous pouvons utiliser des expressions régulières avancées.

Considérez le code suivant :

$code = preg_replace_callback('/"(.*?)"/', array(&$this, '_getPHPString'), $code);
$code = preg_replace_callback("#'(.*?)'#", array(&$this, '_getPHPString'), $code);
Copier après la connexion

Ces expressions régulières correspondent aux sous-chaînes entre les guillemets, mais elles ne parviennent pas à exclure les guillemets échappés. . Pour résoudre ce problème, nous utilisons des modèles d'expressions régulières plus complets :

Regex recommandées :

  • Citations doubles Sous-chaînes :

    "[^"\\]*(?:\\.[^"\\]*)*"/s
    Copier après la connexion
  • Sous-chaînes entre guillemets simples :

    /'[^'\\]*(?:\\.[^'\\]*)*'/s
    Copier après la connexion

Ces expressions régulières permettent tout caractère non échappé, y compris les caractères échappés (par exemple, "n" et "t"), et séquences d'échappement ("").

Explication :

  • [^"\\]* correspond à zéro ou plusieurs caractères sans guillemets ou barre oblique inverse.
  • (?:\\.[^"\\]*)* correspond à n'importe quel nombre de caractères d'échappement suivis d'un guillemet ou d'une barre oblique inverse caractères.
  • le modificateur permet la correspondance sur une seule ligne, ce qui est nécessaire pour s'étendre sur plusieurs lignes.

En incorporant ces expressions rationnelles, vous pouvez extraire avec précision les sous-chaînes qui incluent des caractères d'échappement dans les chaînes entre guillemets. .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal