PHP DOMXPath查询返回值

时间:2015-07-08 21:22:16

标签: php

我希望得到并显示标题,电话,传真和地址(如果存在)。

HTML代码可以是:



<div id="id1"> 

   <div class="AB">

     <ul>

       <li class="title"> AGENCE X </li>

        <li class="tel"> 060000000</li>

       <li class="fax"> 06000000</li>
       
       <li class="address> this is the address </li>

      </ul> 

   </div>

   <div class="AB">   //the same class name
    <ul>
        <li class="titre"> AGENCE X </li>

        <li class="tel"> 060000000</li>

         <li class="fax"> 06000000</li>

    </ul>
    </div>

    <div>...</div>

   </div>
&#13;
&#13;
&#13;

我编写了这段代码,但我不知道如何编写条件&#34;如果一个节点具有类名&#39;地址&#39;或者&#39;传真&#39;或者&#39; tel&#39;存在&#39;然后做 X

这是我的代码:

&#13;
&#13;
$doc = new DOMDocument();
@$doc->loadHTMLFile('http://website.com');

$node = $doc->getElementsByTagName('div') ;
$xpath=new DOMXPath($doc);
$titre=$xpath->query('//div/ul/li[@class="titre"]');
$adresse=$xpath->query('//div/ul/li[@class="adresse"]');
$phone=$xpath->query('//div/ul/li[@class="phone"]');
$fax=$xpath->query('//div/ul/li[@class="fax"]');

$a=0;$b=0;$c=0;

for($i=0;$i<$titre->length;$i++)
{
	echo $titre->item($i)->nodeValue.'<br/>' ;

   if(a "li" has classe="adresse" existe)
    { for($a=0;$a<$adresse->length;$a++) 
   	       {
   				echo $adresse->item($a)->nodeValue.'<br/>' ;
   				$a++;
   		 	}
   		}
  if(a "li" has classe="titre" existe){  for($b=0;$b<$phone->length;$b++) 
  	   {
  			echo $titre->item($b)->nodeValue.'<br/>' ;
  			$b++;
  		}
  }
 if(a "li" has classe="fax" existe) { for($c=0;$c<$fax->length;$c++) 
  	     {
 			echo $fax->item($c)->nodeValue.'<br/>' ;
 			$c++;
 	    } 
 	} 
   
}
&#13;
&#13;
&#13;

有人能告诉我怎么能写这个条件或其他解决方案?

0 个答案:

没有答案