2012-02-23 100 views
0

我想获取日期对象文本内容和Team 1.但Team 2对象具有与日期对象相同的属性选项。我如何获得正确的内容?如果我回显$日期,我会得到与Team2的日期值...我应该如何写条件?PHP DOM访问具有相同属性的对象

<table width="100%" cellpadding=2 cellspacing=0 id="tblFixture" border=0> 
    <tr class=row1 align=center side='home'> 
     <td align=left>21.09.1928</td> 
     <td>&nbsp;</td> 
     <td align='right'><span class='team'>Team 1</span></td> 
     <td align=left><a href='http://www.foo.com/bar' target='_blank'>Team 2</a></td> 
     </td> 
    </tr> 

PHP代码:

$url = "http://www.bla.com/bla.html"; 
$dom = new DOMDocument; 
@$dom->loadHTMLFile($url); 
$xpath = new DOMXPath($dom); 
$nlig = $xpath->query('//table[@id="tblFixture"]/tr[@side=\'home\']'); 

$i = 0; 
foreach ($nlig AS $val) 
{ 
    $date  = $xpath->query('//table[@id="tblFixture"]/tr[@side=\'home\'][@class=\'row1\']/td[@align=\'left\']')->item($i)->textContent; 
    $first_team = $xpath->query('//table[@id="tblFixture"]/tr[@side=\'home\']/td[@align=\'right\']/span[@class=\'team\']')->item($i)->textContent; 

    echo $date, $first_team, "<br />"; 
    $i++; 
} 
+0

什么'可是2队对象具有日期object'手段相同的属性选项? – Alexander 2012-02-23 20:30:52

+0

这里1928年9月21日这里这两个Team 2 都具有ALIGN =左... – 2012-02-23 20:34:01

+0

您使用的是'align'属性为您的数据的标签?不要给它一个'class'或'id'。 – Crontab 2012-02-23 20:37:21

回答

3

您可以使用正则表达式验证/找到为止。

喜欢的东西:

preg_match("/<td align=left>([0-9]{2}.[0-9]{2}.[0-9]{4})<\/td>/", $html, $matches); 
+0

我对regexp没有更多的经验。但是,如果我得到一些正则表达式规则,如:“清除所有数字和逗号”,并与preg_replace函数一起使用,我会得到正确的答案... – 2012-02-23 21:26:31

+0

在我以前的例子中,您将日期存储在$ matches [1]不是你在找什么? – Tchoupi 2012-02-23 21:50:26