我应该使用正则表达式来解析这个html表格数据的字符串吗?

问题描述:

解析这些数据的最佳方式是什么?我应该使用正则表达式还是其他?数据是在html中,但我发现它从一个网站,将解析这一点,只有这个字符串(注:字符串是更长的 - 超过1300个实例 - 只有两个下面) - 注意我使用PHP的& jquery的大多数网络编程。我应该使用正则表达式来解析这个html表格数据的字符串吗?

我只需要在第二个TD和锚内唯一的锚文本中提取数据 - 比如1,它是:最佳,Jahvid DET RB

,我只需要运行这个循环一次。

<tr class="oddtablerow"><td class="rank">1.</td><td class="rank">1.</td><td class="player"><a href="http://football22.myfantasyleague.com/2010/player?L=34793&amp;P=9839" title="Salary: $2250000, Year: 3, Status: 3, Info: Drafted 10 1:04 Team, Week 3: at Vikings Sun 1:00 p.m. ET" class="position_rb">Best, Jahvid DET RB</a> (R) </td><td class="points tot">53.90</td><td class="points avg">26.950</td><td class="points"><a href="detailed?L=34793&amp;W=1&amp;P=9839&amp;YEAR=2010">17.55</a></td> 
<td class="points"><a href="detailed?L=34793&amp;W=2&amp;P=9839&amp;YEAR=2010">36.35</a></td> 
<td class="status"><a title="Owner: William Gold" class="franchise_0009" href="http://football22.myfantasyleague.com/2010/options?L=34793&amp;F=0009&amp;O=01">Team Name</a> - <a href="options?L=34793&amp;O=05&amp;FRANCHISE=0013,0009&amp;PLAYER=9839,">Trade</a></td><td class="week">7</td><td class="salary">$2250000</td></tr> 
<tr class="eventablerow myfranchise "><td class="rank">2.</td><td class="rank">2.</td><td class="player"><a href="http://football22.myfantasyleague.com/2010/player?L=34793&amp;P=3291" title="Salary: $7400000, Year: 3, Status: 3, Info: , Week 3: at Broncos Sun 4:15 p.m. ET" class="position_qb">Manning, Peyton IND QB</a></td><td class="points tot">49.61</td><td class="points avg">24.805</td><td class="points"><a href="detailed?L=34793&amp;W=1&amp;P=3291&amp;YEAR=2010">26.66</a></td> 
<td class="points"><a href="detailed?L=34793&amp;W=2&amp;P=3291&amp;YEAR=2010">22.95</a></td> 
<td class="status"><a title="Owner: Robert M. Cavezza " class="myfranchise franchise_0013" href="http://football22.myfantasyleague.com/2010/options?L=34793&amp;F=0013&amp;O=01">The Bullies</a></td><td class="week">7</td><td class="salary">$7400000</td></tr> 

编辑:发生了什么事jQuery的答案吗?我正要实现它,但它消失

+2

正则表达式和HTML?你在正确的网站:) – miku 2010-09-22 01:44:30

+0

这可能是最[upvoted答案](http://*.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/ 1732454#1732454)在网站上。你可能更适合使用正确的[html parser](http://*.com/questions/292926/robust-mature-html-parser-for-php)并从中提取信息。 – R0MANARMY 2010-09-22 01:54:05

+0

有没有办法查看由管理员或作者删除的旧答案? – 2010-09-22 02:57:38

如果您正在寻找最快的执行速度XmlReader的解决方案是最快的XML解析器之一。这是一个更难使用,然后其他解决方案,如DOM,但因为你想解析很多条目,性能可能很重要。

否则DOM非常易于使用。你可以在this answer中找到一个简单的例子来说明如何使用其他问题。

如果你想你的内容加载为一个字符串这里是你如何做到这一点:

的XMLReader

$foo = new XMLReader(); 
$foo->xml($yourStringHere); 

DOM文档

$foo = new DOMDocument(); 
$foo->loadHTML($yourStringHere); 
+0

要使用这些XML读取器,是否需要将此数据更改为xml对象,然后解析代码?或者我可以解析xml使用这个数据作为一个PHP字符串? – 2010-09-22 03:08:42

+0

@Bob如果你解析HTML,它已经是XML。 – HoLyVieR 2010-09-22 03:12:24

+0

我复制并粘贴一个网站的HTML到一个字符串 - 所以字符串被认为是XML还是我必须建立一个domdocument? - 在你的例子中,你使用了domdocument和一个html文件 - 我将使用一个html字符串,我应该把带引号的文本放在get_file_contents函数所在的脚本中吗? – 2010-09-22 03:13:28