迭代html类并将每个值赋给变量

时间:2014-02-07 10:00:33

标签: php dom xpath domxpath

我正在建立一个小型网站,用于从目录中获取值并将其放置在谷歌地图上。

所以基本上它抓住了名字,地址,电话和网址。我试图使用php和xpath来获取每个值并将它们分配给单独的变量,这样我就可以在我的页面中回显它。

<div class="listing">

  <div data-company="" itemtype="http://schema.org/LocalBusiness" itemscope="" class="l-container clearfix">


  <div class="l-header clearfix">
    <h2 class="cypher">
      <a itemprop="name" href="/company/profile/574">
        The Company
      </a>
    </h2>

  </div>
  <div class="l-footer clearfix">

    <div class="l-telephone">

      <ul>
        <li class="last" data-company-item="telephone">
          Texas: 
          <strong>
            12345 6789
          </strong>
        </li>
      </ul>
    </div>

    <ul class="l-link clearfix">

      <li>
        <a data-company-item="visiturl" href="http://www.mywebsite.com" target="_blank"  class="l-link-w clearfix">
          Visit 

        </a>
      </li>
    </ul>

  </div>


  </div>

</div>

这是我在php中的xpath代码。

   $elements = $xpath->query("//div[@class='listing']//a[@itemprop='name']|//a[@itemprop='address']|//ul/li[@data-company-item='telephone']|//a[@data-company-item='visiturl']");

我遇到的问题是当我遍历值时,我需要将它们分配给变量。

   foreach($elements as $element)
   {
      //$name=
      //$address=
      //$phone = 
     //$url=
   }

显示将是

Company Name: ABC  
Address: Some Address  
Telephone: 123456789 
Website: yourdomain.com

我尝试了下面的代码

   foreach($elements as $element)
   {
        echo $element->nodeValue(0);
        echo "<br>";


   }

它显示所有值,但我需要将每个值分配给变量。有人可以告诉我我该怎么做?

1 个答案:

答案 0 :(得分:0)

实现这一目标的最简单方法是使用关联数组。

在循环外定义它

$storedElements = array();

然后在你的循环内完成

$storedElements[$element]=$element->nodeValue(0);

应该提供所需的结果。

之后你可以像这样访问它们

foreach($storedElement as $element=>$id)
    echo 'id: '.$id.' | element: '.$element."\n"; 

HTH

学家