そこから、以下のような配列を作成したいのですが
どうしたら可能でしょうか?
出力結果:
<td colspan=6 width=600 nowrap><span class="sz12_b"><font color="#ff9900">■</font>都市・空港検索の結果</span></td><td colspan=6 width=600 nowrap class="sz12"><font color="#ff0000">1件</font>該当がありました。</td><td width=50 align="center" class="sz12">YZV</td><td width=50 align="center" class="sz12red">YZV</td><td width=100 class="sz12">カナダ<br>(CA)</td><td width=100 class="sz12">ケッベク<br>(PQ)</td><td width=150 class="sz12">セチール<br>(SEPT-ILES)</td><td width=150 class="sz12">セチール<br>(SEPT ILES MUNICIPAL)</td>[
求める配列:
array(
"AAAA" => "カナダ",
"BBBB" => "ケッベク",
"CCCC" => "セチール",
"DDDD" => "セチール",
)
どうか、皆様のお力を貸して頂けませんでしょうか?
以上、よろしくお願いします。
<?php # 取得した結果が$aに入っているものとする $a = '<td colspan=6 width=600 nowrap><span class="sz12_b"><font color="#ff9900">■</font>都市・空港検索の結果</span></td> < td colspan=6 width=600 nowrap class="sz12"><font color="#ff0000">1件</font>該当がありました。</td> <td width=50 align="center" class="sz12">YZV</td> <td width=50 align="center" class="sz12red">YZV</td> <td width=100 class="sz12">カナダ<br>(CA)</td> <td width=100 class="sz12">ケッベク<br>(PQ)</td> <td width=150 class="sz12">セチール<br>(SEPT-ILES)</td> <td width=150 class="sz12">セチール<br>(SEPT ILES MUNICIPAL)</td> '; # 抽出 preg_match_all('/"sz12">([^<]+)<br/i', $a, $b); # 出力その1 print_r($b[1]); # とりあえずAAAAからZZZZまで準備 $c = array("AAAA", "BBBB", "CCCC", "DDDD", "EEEE", "FFFF", "GGGG", "HHHH", "IIII", "JJJJ", "KKKK", "LLLL", "MMMM", "NNNN", "OOOO", "PPPP", "QQQQ", "RRRR", "SSSS", "TTTT", "UUUU", "VVVV", "WWWW", "XXXX", "YYYY", "ZZZZ"); # 連想配列作成 $d = array(); $e = count($b[1]); for($i=0; $i<$e; $i++){ $d[$c[$i]] = $b[1][$i]; } # 連想配列作成(php5の場合:動作は未検証) /* array_splice($c, count($b[1]); $d = array_combine($c, $b[1]); */ # 出力その2 print_r($d); ?>
AAAAなどのキーは不要ということであれば、出力その1まででOK。
それ以下はキーをつけるための処理。
回答者 | 回答 | 受取 | ベストアンサー | 回答時間 | |
---|---|---|---|---|---|
1 | regnif | 56回 | 51回 | 20回 | 2009-11-19 12:29:10 |
コメント(2件)
ZZZZまで26種類用意すれば足りる?
とりあえずAAAAからZZZZまで順次割り付けるようなスクリプトを組んでみた。