- ベストアンサー
文字列を分解して配列に格納する方法について
- 文字列を分解して配列に格納する方法について具体的な例を挙げて説明します。
- 変更前の文字列を変更後の形式に変換する手順についてまとめます。
- PHPを使用して変更前の文字列を変更後の形式に分解して配列に格納する方法を示します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
一人一人の値は","で区切られている保証はありそうなので $temp = explode (",", $string); $temp[0] = "名前1 <メールアドレス1>" $temp[1] = "メールアドレス2 $temp[2] = "名前3<メールアドレス3>" となります。ただし、この$tempを見ると、 •要素数に保証が無い •アドレスが"<>"で囲まれる保証が無い と見受けられます。 要素が二つ存在するかの判断を"<"の有無で行う。 要素が二つの場合は"<"前を名前、以降をメアドと判断する。 要素が一つの場合は強制的にアドレスと見なす。 と想像すると $string = "名前1 <メールアドレス1>,メールアドレス2, 名前3<メールアドレス3>"; $temp = explode (",", $string); foreach ($temp as $key => $one_list){ if(preg_match("/</", $one_list)){ list($name, $mail_add) = explode ("<", $one_list); $last_array[$key][0] = $name; $last_array[$key][1] = preg_replace ("/>/", "", $mail_add); }else{ $last_array[$key][0] = ""; $last_array[$key][1] = $one_list; } } と、こんな感じでできるかと。
その他の回答 (1)
- kachansa
- ベストアンサー率44% (30/67)
まずは、explodeでカンマ区切りを配列化 $array[i]="名前 <メールアドレス>" あとは、 ループで$array[i]でpreg_matchの正規表現で マッチさせるかな。
お礼
ご回答ありがとうございます。 ご意見参考にさせていただきます。 以上、よろしくお願いします。
お礼
ご回答ありがとうございます。 ご教示いただいたソースに一部 trim を付加すれば、 意図した動作になりそうでした。 それと、入力値がどこまで保証されているか不明だった為、 その点については改めて検討してみたいと思います。 このたびはどうもありがとうございました。 以上、よろしくお願いします。