Maison > développement back-end > tutoriel php > Comment conserver le texte cité sous forme de mots uniques lors de l'utilisation de l'explose() de PHP ?

Comment conserver le texte cité sous forme de mots uniques lors de l'utilisation de l'explose() de PHP ?

Mary-Kate Olsen
Libérer: 2024-12-07 13:01:12
original
432 Les gens l'ont consulté

How to Preserve Quoted Text as Single Words When Using PHP's explode()?

Traiter les mots cités comme des mots simples en PHP éclater

Comment pouvons-nous décomposer une chaîne, comme vu ci-dessous, en utilisant éclater() pendant conserver le texte cité sous forme de mots simples ?

Lorem ipsum "dolor sit amet" consectetur "adipiscing elit" dolor
Copier après la connexion

Attendu Résultat :

["Lorem", "ipsum", "dolor sit amet", "consectetur", "adipiscing elit", "dolor"]
Copier après la connexion

Malgré les tentatives utilisant le code suivant, l'implémentation actuelle segmente chaque mot de la chaîne :

$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

Solution :

Pour capturer avec précision les mots cités en tant qu'entités uniques, nous pouvons tirer parti preg_match_all() :

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

Cette syntaxe raffinée gère même les guillemets échappés dans les phrases entre guillemets.

Répartition de Regex :

"(?:         # Start non-capture group 1
  \        #   Match backslash character
  .         #   Match any character except line breaks
  |         #   Or
  [^\"]    #   Match any character except backslash and double quotes
)*          # End non-capture group 1 and repeat it zero or more times
"           # Match double quotes
|           # Or
\S+         # Match one or more non-whitespace characters
Copier après la connexion

Gestion de " Au lieu des guillemets doubles :

En cas de besoin surgissez pour traiter " à la place des guillemets doubles, utilisez cette expression régulière ajustée :

preg_match_all('/%22(?:\\.|(?!%22).)*%22|\S+/', $text, $matches);
Copier après la connexion

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