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
Attendu Résultat :
["Lorem", "ipsum", "dolor sit amet", "consectetur", "adipiscing elit", "dolor"]
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);
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);
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
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);
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!