• ベストアンサー

文字列を配列にしたい

お世話になります。 PHP4.3.9を利用しているのですが、以下のような文字列を分割して、求める形の配列に入れたいのですが、何か良い方法はありますでしょうか? ■文字列 abc=123&def=456&ghi=789 ■このような形にしたいと思っています↓ $hoge = array(   "abc"=>"123",   "def"=>"456",   "ghi"=>"789" ) ヒントだけでも結構ですので、ご教示いただけると幸いです。宜しくお願いします。

  • PHP
  • 回答数3
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

parse_strという関数があります。 http://jp2.php.net/manual/ja/function.parse-str.php 第二引数($arr)が追加されたのは4.0.3ですから、質問者さんの環境(4.3.9)なら問題なく使えます。 (e.g.) <?php $str = 'abc=123&def=456&ghi=789'; parse_str($str, $hoge); print "<pr>"; print_r($hoge); print "</pr>";

その他の回答 (2)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.3

ANo.2です。 まったくの蛇足ですが、ANo.2の例示ソースでpre要素をprで書いてしまってますね(恥

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

こんなかんじ <?PHP $str="abc=123&def=456&ghi=789"; $pattern="/(?<=^|&)(.*?)=(.*?)(?=&|$)/"; preg_match_all($pattern,$str,$match); foreach((array) $match[1] as $key=>$val){ $hoge[$val]=$match[2][$key]; } print_r($hoge); ?>

関連するQ&A

  • 二次元配列の分割

    よろしくお願いします。 $hoge = array( "one" => array("abc" => "100", "def" => "200", "ghi" => "300"), "two" => array("abc" => "110", "def" => "210", "ghi" => "310"), "three" => array("abc" => "120", "def" => "220", "ghi" => "320") "four" => array("abc" => "130", "def" => "230", "ghi" => "330") ); というような配列があったとき、 abcが110以下のときと、110より大きい場合で分割した配列を 用意したいと考えてます。 具体的には、 $hoge1 = array( "one" => array("abc" => "100", "def" => "200", "ghi" => "300"), "two" => array("abc" => "110", "def" => "210", "ghi" => "310"), ); と $hoge2 = array( "three" => array("abc" => "120", "def" => "220", "ghi" => "320") "four" => array("abc" => "130", "def" => "230", "ghi" => "330") ); に分割したいと考えています。 どのように記述すればよいのでしょうか?

    • ベストアンサー
    • PHP
  • VBA:配列の中で文字列が何番目にあるか知りたい

    たとえば Hairetu = Array("ABC","DEF","GHI") としておいて配列から"DEF"が何番目にあるのかを検索する方法はないのでしょうか? よろしくお願いします。

  • 文字列になっている配列を‥

    以下の値がDBに文字列の項目に登録されています。 DB から値を取得したのはいいのですが文字列なので foreach でグルグルしようとすると怒られてしまいます。 配列の型に変換できればいいのですが(array)だとうまく行かないしどうすればいいかどなたかご教授願えないでしょうか。 よろしくお願いします。 ■値(文字列でDBに格納されてます‥) array( 1=>'a', 2=>'b', 3=>'c', 10=>array( 'A'=>1, 'B'=>'hoge1', ), 11=>array( 'A'=>2, 'B'=>'hoge2', ), 12=>array( 'A'=>3, 'B'=>'hoge3', ), )

    • 締切済み
    • PHP
  • QUERY_STRINGを連想配列に入れたい

    よろしくお願いします。 $_SERVER['QUERY_STRING']の値 q1=abc&q2=def&q3=ghi を連想配列に入れたいと思います。 $array = array("q1"=>"abc","q2"=>"def","q3"=>"ghi"); どのようにしたらQUERY_STRINGの値を連想配列に入れられますか?

    • ベストアンサー
    • PHP
  • 文字列スカラを3バイトごとのリスト値にしたい、最後のは3バイトで無くてもいい。

    ある文字列を3バイト毎に配列に入れる書き方がわからず困っております。 $a = "ABCDEFGHIJK" @b = [ABC,DEF,GHI,JK]となって欲しいです。

    • ベストアンサー
    • Perl
  • PHP 配列について

    PHPで簡単なプログラムを作っています。 上手い方法があれば教えてください。 例えば $arr = array(); $arr(0) = "ABC"; $arr(1) = "DEF"; $arr(2) = "GHI"; $arr(3) = "JKL"; $arr(4) = "MNO"; この様な配列があり、これを以下の様に「特定のデータを削除し空いているキーを詰めたい」場合どうしたら良いのでしょうか? この場合は"DEF"を削除。 $arr(0) = "ABC"; $arr(1) = "GHI"; $arr(2) = "JKL"; $arr(3) = "MNO"; アドバイスお願いします。

    • ベストアンサー
    • PHP
  • 区切り文字を配列に格納する方法を教えて下さい。

    区切り文字を配列に格納する方法を教えて下さい。 $array[] = "abc,1981,1,12"; $array[] = "def,1982,2,18"; $array[] = "ghi,1991,4,12"; list($name[$i],$yy[$i],$mm[$i],$dd[$i]) = split("\,",$array[$i]); でループさせればそれぞれの変数に代入できますが、例えば $name["abc"]["yy"] = "1981"; $name["abc"]["mm"] = "1"; $name["abc"]["dd"] = "12"; のように分解するにはどうすれば良いでしょうか?

    • 締切済み
    • PHP
  • 不特定数存在する特定文字直後にある文字を配列に入れる

    perlとMySQLでデータベースを作っています。 だいぶ行き詰ってしまったので質問させてください。 以下のような一行の文字列が存在するとします。 ABC DEF @@@2222 EHI J @@@888 KL MN OPQR @@@632 ST この中から、 2222 888 632 を取り出して配列に格納することは可能でしょうか? 分割することは可能な気はするのですが、 それを配列に入れるとなるとどうにもならなくなってしまいました。 漠然とした質問で大変申し訳ないのですが、 なにかヒントになるものだけでもお気づきの方いらっしゃいましたら、 ぜひご教示くださいませ。

    • ベストアンサー
    • Perl
  • 文字列から配列作成

    お世話になっております。 〔abc〕あいうえお<BR>〔def〕かきくけこ<BR>・・・ という構成になっている $M から @A = qw(abc def ・・・); @B = qw(あいうえお かきくけこ ・・・); という配列を取り出したいのですが、どのような方法がありますでしょうか。 御教示宜しくお願い致します。

    • ベストアンサー
    • Perl
  • 複雑な/による文字列の分割について

    $str = "hello/$(hoge/$(hoge/good)/id)/namae"; このような文字列を/で以下のように分割して配列に入れようと考えています。 Array ( [0] => hello [1] => $(hoge/$(hoge/good)/id) [2] => namae ) しかし単にsplitで分割してもこのようにならないので正規表現でやりたいんですがどのようにしたらこのように分割できるでしょうか??

    • ベストアンサー
    • PHP

専門家に質問してみよう