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

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

DDD
リリース: 2024-12-10 02:48:08
オリジナル
778 人が閲覧しました

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

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

PHP の一般的なタスクは、キーと値のペアが区切られて書式設定された文字列を処理することです。セパレータによって。一般的な例は、バックスラッシュで区切られた文字列で、キーと値のペアがバックスラッシュ () で区切られています。

preg_match_all と array_combine の使用

効果的な方法の 1 つは、以下を使用することです。 preg_match_all 関数を使用して、キーと値の両方を別々の配列に抽出し、次を使用して結合します。 array_combine.

preg_match_all("/([^\\]+)\\([^\\]+)/", $string, $p);
$array = array_combine($p[1], $p[2]);
ログイン後にコピー

この正規表現パターンは、バックスラッシュ以外の文字を $p[1] (キー) に一致させ、バックスラッシュ以外の文字を $p[2] (値) に一致させます。

キー/値の区切り文字のカスタマイズ

このアプローチは、さまざまな処理を行うために一般化できます。キーと値の区切り文字:

preg_match_all("/ ([^:]+) : ([^,]+) /x", $string, $p);
$array = array_combine($p[1], $p[2]);
ログイン後にコピー

「:」を目的のキーと値の区切り文字に置き換え、「,」を目的のペアの区切り文字に置き換えるだけです。

さまざまな区切り文字を許可する

さまざまな区切り文字を許可するには、 use:

preg_match_all("/ ([^:=]+) [:=]+ ([^,+&]+) /x", $string, $p);
ログイン後にコピー

これにより、key=value、key2:value2、または同様のバリエーションが許可されます。

追加機能

抽出:

  • 英数字の制約キー: キーが英数字であることを確認します。
  • スペース/引用符の削除: 不要なスペースまたは引用符を削除します。
  • INI 形式の抽出:共通の INI 形式でデータを抽出する(key=value).

代替: parse_str

key=value&key2=value2 文字列を便利に処理するには、parse_str を使用することを検討してください。 strtr:

parse_str(strtr($string, ":,", "=&"), $pairs);
ログイン後にコピー

考慮事項

  • preg_match_all array_combine: 柔軟性が高く、カスタマイズ可能で、未知の用途に適していますdelimiters.
  • parse_str: 「&」などの既知の区切り文字に対してよりシンプルで最適化されています。
  • explode foreach: 手動アプローチ、多くの場合、遅くて冗長です.

要件に基づいて最適な方法を選択してください

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

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