PHPのsimple_html_dom.phpを使用して以下の出力結果になったのですが、

そこから、以下のような配列を作成したいのですが
どうしたら可能でしょうか?

出力結果:
<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" => "セチール",
)

どうか、皆様のお力を貸して頂けませんでしょうか?
以上、よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:2009/11/18 18:38:35
  • 終了:2009/11/25 18:40:02

回答(2件)

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012009/11/18 19:45:02

ポイント60pt
<?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
  • id:kn1967
    AAAAとかBBBBってのはどこから来たの?

    ZZZZまで26種類用意すれば足りる?
  • id:kn1967
    どこからAAAA等を持ってくるのかによって、適宜改造する事になるとは思うが、
    とりあえずAAAAからZZZZまで順次割り付けるようなスクリプトを組んでみた。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません