Maison > développement back-end > tutoriel php > Comment convertir une chaîne délimitée par une barre oblique inverse en un tableau associatif en PHP ?

Comment convertir une chaîne délimitée par une barre oblique inverse en un tableau associatif en PHP ?

Susan Sarandon
Libérer: 2024-11-29 18:17:08
original
393 Les gens l'ont consulté

How to Convert a Backslash-Delimited String to an Associative Array in PHP?

Transformer une chaîne délimitée par une barre oblique inverse en un tableau associatif

Convertir une chaîne avec des paires clé-valeur séparées par des barres obliques inverses en un tableau associatif est une tâche fréquente dans la programmation PHP. Voici quelques approches :

Utilisation de preg_match_all et array_combine :

L'option la plus efficace consiste à utiliser la fonction preg_match_all avec une expression régulière pour extraire les clés et les valeurs. Par la suite, la fonction array_combine peut être utilisée pour créer un tableau associatif :

preg_match_all("/([^\\]+)\\([^\\]+)/", $string, $p);
$array = array_combine($p[1], $p[2]);
Copier après la connexion

Adaptation à différents délimiteurs :

La même approche peut être généralisée pour répondre à différents délimiteurs de valeur-clé et de paire. Par exemple, l'expression régulière suivante peut gérer les deux-points et les virgules comme séparateurs :

preg_match_all("/ ([^:]+) : ([^,]+) /x", $string, $p);
$array = array_combine($p[1], $p[2]);
Copier après la connexion

Autoriser les délimiteurs flexibles :

Autoriser les délimiteurs arbitraires offre une plus grande polyvalence. L'expression régulière suivante permet de séparer les clés et les valeurs par différents caractères :

preg_match_all("/ ([^:=]+) [:=]+ ([^,+&]+) /x", $string, $p);
Copier après la connexion

Contraindre les clés alphanumériques :

Pour restreindre les clés aux caractères alphanumériques, l'expression régulière suivante peut être employé :

preg_match_all("/ (\w+) = ([^,]+) /x", $string, $p);
Copier après la connexion

Décapage des espaces et Citation :

Pour éliminer les espaces et les guillemets facultatifs des clés et des valeurs, cette expression régulière peut être utilisée :

preg_match_all("/ \s*([^=]+) \s*=\s* ([^,]+) (?<!\s) /x", $string, $p);
Copier après la connexion

Extraction des configurations de style INI :

Pour extraire les configurations de style INI, l'expression régulière suivante est utile :

preg_match_all("/^ \s*(\w+) \s*=\s* ['\"]?(.+?)['\"]? \s* $/xm", $string, $p);
Copier après la connexion

Alternative : parse_str

Pour les chaînes déjà formatées comme "key=value&key2=value2", la fonction parse_str peut être utilisée. Le combiner avec strtr permet le traitement de délimiteurs alternatifs :

parse_str(strtr($string, ":,", "=&amp;"), $pairs);
Copier après la connexion

Autres approches :

Bien que moins efficace, il est possible d'exploser manuellement la chaîne et de la parcourir en boucle le tableau pour créer le tableau associatif. Cependant, le profilage révèle souvent que cette méthode est plus lente que l'approche des expressions régulières.

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