↓みたいな形にしたい。
$arr = array(”地震” => array(
”地震headline”,
”地震速報”,
”臨時地震”,
”臨時地震+”
),
”おすすめ” => array(
”政治家語録”,
”ビジネスnews+”,
”芸スポ速報+”,
”femalenews+”,
”channelbox”
)
);
http://menu.2ch.net/bbsmenu.html
http://www.hatena.ne.jp/1128270370#
人力検索はてな - 2chのメニューをPHPの配列に持って行きたいのですが、良い方法ないですかね? ↓みたいな形にしたい。 $arr = array(”地震” => array( ”地震headline”, ”地震速報”, ..
awkスクリプトで良ければ…。
#!/usr/bin/awk -f
BEGIN { print ”$arr = array(”; f=0; }
/<[bB]>/ {
s = match($0, ”<[bB]>”);
if(s != 0) s = s + RLENGTH;
e = match($0, ”</[bB]>”);
if(e != 0) e = e - s;
if(s != 0 && e != 0) {
if(f != 0) {
printf ”¥n),¥n”;
}
f = 1;
T = substr($0, s, e);
print ”¥””T”¥” => array(”;
}
}
/<[aA] [hH][rR][eE][fF]=/ {
if(f == 0) {
} else {
s = match($0, ”<[aA] [hH][rR][eE][fF]=[^>]*>”);
if(s != 0) s = s + RLENGTH;
e = match($0, ”</[aA]>”);
if(e != 0) e = e - s;
if(s != 0 && e != 0) {
if(f != 1) {
print ”,”;
}
f = 2;
T = substr($0, s, e);
printf ”¥”%s¥””, T;
}
}
}
END { printf ”¥n)¥n);¥n”; }
結果はこんな感じです。
$ awk -f array.awk bbsmenu.html | nkf -e > array.php
$ head array.php
$arr = array(
”地震” => array(
”地震headline”,
”地震速報”,
”臨時地震”,
”臨時地震+”
),
”おすすめ” => array(
”政治家語録”,
”ビジネスnews+”,
$ tail array.php
”沖縄”
),
”他のサイト” => array(
”megabbs”,
”MILKCAFE”,
”BBNews”,
”レンサバ比較”,
”ペンフロ”
)
);
ありがとうございます!
awk