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

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

DDD
Libérer: 2024-12-10 02:48:08
original
779 Les gens l'ont consulté

How can I convert a backslash-delimited string into an associative array in PHP?

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

En PHP, une tâche courante consiste à traiter des chaînes formatées avec des paires clé-valeur séparées par un séparateur. Un exemple courant est une chaîne délimitée par une barre oblique inverse, où les paires clé et valeur sont séparées par une barre oblique inverse ().

Utiliser preg_match_all et array_combine

Une méthode efficace consiste à utiliser la fonction preg_match_all pour extraire les clés et les valeurs dans des tableaux séparés, qui sont ensuite combinés à l'aide de array_combine.

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

Ce modèle d'expression régulière fait correspondre tous les caractères sans barre oblique inverse dans $p[1] (clés) et tous les caractères sans barre oblique inverse dans $p[2] (valeurs).

Personnalisation des séparateurs clé/valeur

Cette approche peut être généralisée pour gérer différentes valeurs-clés séparateurs :

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

Remplacez simplement ":" par le séparateur clé-valeur souhaité et "," par le délimiteur de paire souhaité.

Autoriser les délimiteurs variables

Pour autoriser différents délimiteurs, utilisez :

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

Cela autorise key=value, key2:value2, ou variantes similaires.

Fonctionnalités supplémentaires

Vous pouvez améliorer davantage l'extraction :

  • Contraindre les clés alphanumériques :Assurez-vous que les clés sont alphanumériques.
  • Strip Espaces/Citations : Supprimez les espaces ou les guillemets inutiles.
  • Extraction de style INI : Extrayez les données au format INI commun (clé = valeur).

Alternative : parse_str

Pour une manipulation pratique des key=value&key2=value2 strings, pensez à utiliser parse_str avec strtr :

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

Considérations

  • preg_match_all array_combine : Très flexible, personnalisable et bien adapté aux inconnus délimiteurs.
  • parse_str : Plus simple et optimisé pour les délimiteurs connus comme "&".
  • explose foreach : Approche manuelle, souvent plus lente et plus verbeuse .

Choisissez la méthode la plus appropriée en fonction de vos besoins et compromis.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal