Umwandeln einer durch Backslashes getrennten Zeichenfolge in ein assoziatives Array
Das Konvertieren einer Zeichenfolge mit durch Backslashes getrennten Schlüssel-Wert-Paaren in ein assoziatives Array ist eine häufige Aufgabe in der PHP-Programmierung. Hier sind einige Ansätze:
Verwendung von preg_match_all und array_combine:
Die effizienteste Option besteht darin, die Funktion preg_match_all mit einem regulären Ausdruck zu verwenden, um die Schlüssel und Werte zu extrahieren. Anschließend kann die Funktion array_combine verwendet werden, um ein assoziatives Array zu erstellen:
preg_match_all("/([^\\]+)\\([^\\]+)/", $string, $p); $array = array_combine($p[1], $p[2]);
Anpassung an verschiedene Trennzeichen:
Derselbe Ansatz kann verallgemeinert werden, um Variationen gerecht zu werden Schlüsselwert- und Paartrennzeichen. Beispielsweise kann die folgende Regex Doppelpunkte und Kommas als Trennzeichen verarbeiten:
preg_match_all("/ ([^:]+) : ([^,]+) /x", $string, $p); $array = array_combine($p[1], $p[2]);
Flexible Trennzeichen zulassen:
Das Zulassen beliebiger Trennzeichen bietet eine größere Vielseitigkeit. Mit der folgenden Regex können Schlüssel und Werte durch verschiedene Zeichen getrennt werden:
preg_match_all("/ ([^:=]+) [:=]+ ([^,+&]+) /x", $string, $p);
Alphanumerische Schlüssel einschränken:
Um Schlüssel auf alphanumerische Zeichen zu beschränken, kann die folgende Regex dies tun eingesetzt werden:
preg_match_all("/ (\w+) = ([^,]+) /x", $string, $p);
Stripping Spaces und Anführungszeichen:
Um Leerzeichen und optionale Anführungszeichen aus Schlüsseln und Werten zu entfernen, kann dieser reguläre Ausdruck verwendet werden:
preg_match_all("/ \s*([^=]+) \s*=\s* ([^,]+) (?<!\s) /x", $string, $p);
Konfigurationen im INI-Stil extrahieren:
Zum Extrahieren von Konfigurationen im INI-Stil eignet sich der folgende reguläre Ausdruck nützlich:
preg_match_all("/^ \s*(\w+) \s*=\s* ['\"]?(.+?)['\"]? \s* $/xm", $string, $p);
Alternative: parse_str
Für Zeichenfolgen, die bereits als „key=value&key2=value2“ formatiert sind, kann die Funktion parse_str verwendet werden. Die Kombination mit strtr ermöglicht die Verarbeitung alternativer Trennzeichen:
parse_str(strtr($string, ":,", "=&"), $pairs);
Andere Ansätze:
Obwohl weniger effizient, ist es möglich, die Zeichenfolge manuell aufzulösen und durchzuschleifen das Array, um das assoziative Array zu erstellen. Bei der Profilerstellung stellt sich jedoch häufig heraus, dass diese Methode langsamer ist als der Ansatz mit regulären Ausdrücken.
Das obige ist der detaillierte Inhalt vonWie konvertiert man in PHP einen durch einen Backslash getrennten String in ein assoziatives Array?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!