通过HTML类迭代,并将每个值分配给变量



im建立一个小型网站,该网站从目录中获取值并放置Google Maps。

基本上,它抓住了名称,地址,电话和URL。我试图使用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>";

   }

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

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

在循环外部像这样定义它

$storedElements = array();

然后在您的循环内部简单地做

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

应提供所需的结果。

之后,您可以像这样访问它们

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

hth

J。

最新更新