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
DDDoriginal
2024-12-10 02:48:08780parcourir

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]);

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]);

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);

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);

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!

Déclaration:
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