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]);
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]);
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);
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);
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);
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);
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, ":,", "=&"), $pairs);
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!