日期:2014-05-17  浏览次数:20440 次

正则表达式怎么得到网址和汉字
<tr class="line">

  <td align="center">[玄幻魔法]</td>

  <td><a href="http://www.xiaoshuo5200.net/html/0/1/index.html">斗破苍穹</a></td>

  <td><a href="http://www.xiaoshuo5200.net/html/0/1/640748.html" target="_blank">第一章 五帝破空</a></td>

  <td>天蚕土豆</td>

  <td>08-01</td>

  <td align="center">连载</td>

  <td align="center">1608</td>

  </tr>


------解决方案--------------------
PHP code

//题目说得不是很清楚,汉字?是指a标签的内容,还是所有的中文?
//这里暂时以标签内容处理
$str = '<tr class="line">

  <td align="center">[玄幻魔法]</td>

  <td><a href="http://www.xiaoshuo5200.net/html/0/1/index.html">斗破苍穹</a></td>

  <td><a href="http://www.xiaoshuo5200.net/html/0/1/640748.html" target="_blank">第一章 五帝破空</a></td>

  <td>天蚕土豆</td>

  <td>08-01</td>

  <td align="center">连载</td>

  <td align="center">1608</td>

  </tr>';
preg_match_all('/<a.*href="(.*)".*>(.*)<\/a>/isU', $str, $matches);
foreach($matches[1] as $k=>$v) {
    echo $v . '=>' . $matches[2][$k] . '<br/>';
}
/**
输出结果:
http://www.xiaoshuo5200.net/html/0/1/index.html=>斗破苍穹
http://www.xiaoshuo5200.net/html/0/1/640748.html=>第一章 五帝破空
*/

------解决方案--------------------
PHP code
<?php
 $str = <<<EOT
 <tr class="line">

  <td align="center">[玄幻魔法]</td>

  <td><a href="http://www.xiaoshuo5200.net/html/0/1/index.html">斗破苍穹</a></td>

  <td><a href="http://www.xiaoshuo5200.net/html/0/1/640748.html" target="_blank">第一章 五帝破空</a></td>

  <td>天蚕土豆</td>

  <td>08-01</td>

  <td align="center">连载</td>

  <td align="center">1608</td>

  </tr>
EOT;
$patten = '/<td( +align *= *"[^"]*")?>(<a *href *= *"([^"]*)"( target="[^"]*")?>)?([^<>]*)(<\/a>)?<\/td>/isU';

preg_match_all($patten,$str,$arr);  
echo "<pre>";
print_r($arr[3]);
print_r($arr[5]);
echo "</pre>";