[PHP-users 28967] Re: 特定タグの文字を抽出するには

K.Nakatsuka tanpoko @ wk9.so-net.ne.jp
2006年 4月 11日 (火) 02:09:37 JST


中司と申します。

On Tue, 11 Apr 2006 00:22:13 +0900
大塚 哲治 <goroneko @ pop17.odn.ne.jp> wrote:

> <tr>
> <td nowrap>
> 2006-2-4
> </td>
> <td>
>   芸能人A
> </td>
> <td><a href="/hoge/020492">題名A</a></td>
> <td>50 MB</td>
> <td>
> <span>
> <img border="0" src="http://hoge.com/hoge.gif"></span>
> </td>
> <td style="color: blue;">&nbsp;</td>
> </tr>
> ・・・上記の内容が同じように繰り返す・・・
> ---
> この文字列から配列に
> human["芸能人A"]="題名A"
> human["芸能人B"]="題名B"

気分転換にチャレンジしてみました。
  # お見せするのは恥ずかしい出来なのですが参考になれば (^^;
  # 識者の方からもっとスマートな方法が提示されると思います。

(1) 実行結果
$>  sed -f test.sed test.txt | awk -f test.awk | sed 's/<\/a><\/td>//'
human["芸能人A"]="題名A"
human["芸能人ABC"]="題名DEF"

(2) test.sed の中身
/^<td>$/{
    n
    /^<span>$/{
        d
    }
    p
}
/^<td><a/{
    p
}
d

(3) test.awk の中身
{
    if( "<td><a" == $1 ) {
#       print
        str1 = substr($0,28);
        printf ("\""); printf str1; printf ("\"\n");
    }
    else if( "<td>" != $1 ){
        printf("human[\""); printf $2; printf("\"]=");
    }
}

-- 
K.Nakatsuka
(tanpoko @ wk9.so-net.ne.jp)


PHP-users メーリングリストの案内