バックスラッシュで区切られた文字列を連想配列に変換する
バックスラッシュで区切られたキーと値のペアを持つ文字列を連想配列に変換するには、次のようにします。 PHP プログラミングで頻繁に行われるタスク。以下にいくつかのアプローチを示します:
preg_match_all と array_combine の使用:
最も効率的なオプションは、preg_match_all 関数を正規表現とともに使用してキーと値を抽出することです。その後、array_combine 関数を使用して連想配列を作成できます。
preg_match_all("/([^\\]+)\\([^\\]+)/", $string, $p); $array = array_combine($p[1], $p[2]);
異なる区切り文字に適応する:
同じアプローチを一般化して、さまざまな区切り文字に対応できます。キーと値およびペアの区切り文字。たとえば、次の正規表現はコロンとカンマを区切り文字として処理できます:
preg_match_all("/ ([^:]+) : ([^,]+) /x", $string, $p); $array = array_combine($p[1], $p[2]);
柔軟な区切り文字の許可:
任意の区切り文字を許可すると、汎用性が高まります。次の正規表現では、キーと値を異なる文字で区切ることができます:
preg_match_all("/ ([^:=]+) [:=]+ ([^,+&]+) /x", $string, $p);
英数字キーの制約:
キーを英数字に制限するには、次の正規表現を使用します。雇用される:
preg_match_all("/ (\w+) = ([^,]+) /x", $string, $p);
ストリッピングスペースと引用符:
キーと値から空白とオプションの引用符を削除するには、次の正規表現を使用できます:
preg_match_all("/ \s*([^=]+) \s*=\s* ([^,]+) (?<!\s) /x", $string, $p);
INI スタイル構成の抽出:
INI スタイルの構成を抽出する場合、次の正規表現は次のとおりです。便利:
preg_match_all("/^ \s*(\w+) \s*=\s* ['\"]?(.+?)['\"]? \s* $/xm", $string, $p);
代替: parse_str
すでに「key=value&key2=value2」としてフォーマットされている文字列の場合は、parse_str 関数を利用できます。 strtr と組み合わせると、代替区切り文字の処理が可能になります:
parse_str(strtr($string, ":,", "=&"), $pairs);
その他のアプローチ:
効率は劣りますが、手動で文字列を分解してループすることは可能です。連想配列を作成する配列。ただし、プロファイリングにより、この方法が正規表現アプローチよりも遅いことが判明することがよくあります。
以上がPHP でバックスラッシュで区切られた文字列を連想配列に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。