Maison > développement back-end > tutoriel php > Comment diviser une chaîne en mots tout en préservant les phrases citées ?

Comment diviser une chaîne en mots tout en préservant les phrases citées ?

Susan Sarandon
Libérer: 2024-12-06 02:59:17
original
1029 Les gens l'ont consulté

How to Split a String into Words While Preserving Quoted Phrases?

Comment diviser des chaînes par mots, en préservant le texte cité

Pour la chaîne donnée "Lorem ipsum "dolor sit amet" consectetur "adipiscing elit « Dolor », nous cherchons une méthode pour l'éclater en un tableau, en maintenant l'intégrité des phrases citées. L'utilisation du code fourni :

$mytext = "Lorem ipsum %22dolor sit amet%22 consectetur %22adipiscing elit%22 dolor"
$noquotes = str_replace("%22", "", $mytext");
$newarray = explode(" ", $noquotes);
Copier après la connexion

entraîne la division de mots individuels. Pour résoudre ce problème, nous exploitons les expressions régulières :

$text = 'Lorem ipsum "dolor sit amet" consectetur "adipiscing \"elit" dolor';
preg_match_all('/"(?:\\.|[^\\"])*"|\S+/', $text, $matches);
Copier après la connexion

Cette expression régulière correspond soit à des chaînes entre guillemets, soit à des caractères autres que des espaces. Les chaînes entre guillemets peuvent contenir des guillemets doubles échappés ("), et la technique s'en charge. Le résultat :

Array
(
    [0] => Array
        (
            [0] => Lorem
            [1] => ipsum
            [2] => "dolor sit amet"
            [3] => consectetur
            [4] => "adipiscing \"elit"
            [5] => dolor
        )

)
Copier après la connexion

Explication :

L'expression régulière peut être décomposée en ses composants :

  • `" # Correspond au caractère guillemet double ("
  • (?: # Démarrer le groupe sans capture 1
  • # Correspond au caractère barre oblique inverse ()
  • # Correspond à n'importe quel caractère à l'exception des sauts de ligne
  • | # OU
  • 1 # Correspond à n'importe quel caractère sauf et "
  • )* # Terminez le groupe 1 sans capture et répétez-le zéro ou plusieurs fois
  • " # Correspond au caractère guillemet double ("
  • | # OU
  • S # Correspond à un ou plusieurs espaces non blancs personnages

    "

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!

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