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

egis@csc.jp egis @ csc.jp
2006年 4月 12日 (水) 00:27:53 JST


いわせです。

やってみました。ちとみにくいですがご勘弁をm(__)m

--- ソース ----------------------------------------------
<?php

// サンプルHTML文字列
$html = <<<HTML
<html lang='ja'>
<head>
<title>てすと</tiltle>
</head>
<body>
<h1>てすと</h1>
<table border='1'>
<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>

<tr>
<td nowrap>
2006-2-8
</td>
<td>
  芸能人B

</td>
<td><a href="/hoge/020492">題名B</a></td>
<td>80 MB</td>
<td>
<span>
<img border="0" src="http://hoge.com/hoge.gif"></span>
</td>
<td style="color: blue;">&nbsp;</td>
</tr>
<tr>
<td nowrap>
2006-2-8
</td>
<td>
  芸能人-3
</td>
<td><a href="/hoge/020492">題名3</a></td>
<td>80 MB</td>
<td>
<span>
<img border="0" src="http://hoge.com/hoge.gif"></span>
</td>
<td style="color: blue;">&nbsp;</td>
</tr>
</table>
<hr />
</body>
</html>

HTML;

// ここから解析
$result = array();
if
(preg_match_all("!<tr[^>]*>[^<]*<td[^>]*>.*?</td>[^<]*<td[^>]*>(.*?)</td>[^<]*<td[^>]*>(.*?)</td>[^<]*<td[^>]*>.*?</td>[^<]*</tr>!s",
$html, $matches)) {
    $i = 0;
    foreach ($matches[1] as $key) {
        $key = trim(str_replace(' ', '', $key));
        $value = trim(preg_replace("/<\/?[^>]*>/", '', $matches[2][$i]));
        $result[$key] = $value;
        ++$i;
    }
}

// 結果表示
echo "<pre>";
print_r($result);
echo "</pre>";

?>

--- 結果 ----------------------------------------------

Array
(
    [芸能人A] => 題名A
    [芸能人B] => 題名B
    [芸能人-3] => 題名3
)



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