ホームページ > バックエンド開発 > PHPチュートリアル > PHP でバックスラッシュで区切られた文字列を連想配列に変換するにはどうすればよいですか?

PHP でバックスラッシュで区切られた文字列を連想配列に変換するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-29 18:17:08
オリジナル
472 人が閲覧しました

How to Convert a Backslash-Delimited String to an Associative Array in PHP?

バックスラッシュで区切られた文字列を連想配列に変換する

バックスラッシュで区切られたキーと値のペアを持つ文字列を連想配列に変換するには、次のようにします。 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, ":,", "=&amp;"), $pairs);
ログイン後にコピー

その他のアプローチ:

効率は劣りますが、手動で文字列を分解してループすることは可能です。連想配列を作成する配列。ただし、プロファイリングにより、この方法が正規表現アプローチよりも遅いことが判明することがよくあります。

以上がPHP でバックスラッシュで区切られた文字列を連想配列に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート