使用php获取HTML标记内容

时间:2013-04-30 08:58:24

标签: php regex file-get-contents

基本上我使用php URLfile_get_contents()获取内容。

获取页面源后,我必须从页面源的这一部分获取数据

<div class="span2 box-product" data-store="kimstore" data-product-id="cpnYKmW6D5" data-product-title="Nokia-900-Lumia">
<a href="/Nokia-900-Lumia/p-cpnYKmW6D5" title="Nokia 900 Lumia Php 14,300">
    <img src="https://m-md.s3.amazonaws.com/storefront/kimstore/media/46/68/2d/99/68159647b67e5b1a2d124f9-120x90" width="120" height="90" title="Nokia 900 Lumia Php 14,300" alt="Nokia 900 Lumia Php 14,300" />
</a>
<p class="title">
    <a href="/Nokia-900-Lumia/p-cpnYKmW6D5" title="Nokia 900 Lumia Php 14,300">
        Nokia 900 Lumia
    </a>
</p>
<p class="price">Php 14,300</p>
<p class="shop">
    <a href="/kimstore" title="kimstore">kimstore</a>
</p>
</div>

因此,我必须在<div class="span2 box-product"及其结束标记之间获取数据。

然后,我必须得到3个数据:  数据存储  2.数据产品标题  3.价格

我尝试使用regex,但没有运气。有什么建议,要使用什么技术?提前谢谢。

3 个答案:

答案 0 :(得分:1)

使用SimpleXML,您可以作为PHP对象访问属性和DOM。将结果从file_get_contents传递给SimpleXML,如下所示:

$str = file_get_contents($url);
$xml = simplexml_load_string($string);

http://in1.php.net/manual/en/class.simplexmlelement.php http://in1.php.net/manual/en/simplexml.examples-basic.php

答案 1 :(得分:0)

使用 DOM 扩展名(或 SimpleXML ,如果您解析xhtml文档)。

http://php.net/manual/en/book.dom.php

http://php.net/manual/en/book.simplexml.php

如果您的文档不是有效的XML ,SimpleXML可能会失败。

此外,您应该了解 xPath 以快速访问任何DOM节点。

答案 2 :(得分:0)

只需使用您提供的HTML代码,此解决方案就可以运行:

<?php
$html = <<<HTML
<div class="span2 box-product" data-store="kimstore" data-product-id="cpnYKmW6D5" data-product-title="Nokia-900-Lumia">
    <a href="/Nokia-900-Lumia/p-cpnYKmW6D5" title="Nokia 900 Lumia Php 14,300">
        <img src="https://m-md.s3.amazonaws.com/storefront/kimstore/media/46/68/2d/99/68159647b67e5b1a2d124f9-120x90" width="120" height="90" title="Nokia 900 Lumia Php 14,300" alt="Nokia 900 Lumia Php 14,300" />
    </a>
    <p class="title">
        <a href="/Nokia-900-Lumia/p-cpnYKmW6D5" title="Nokia 900 Lumia Php 14,300">
            Nokia 900 Lumia
        </a>
    </p>
    <p class="price">Php 14,300</p>
    <p class="shop">
        <a href="/kimstore" title="kimstore">kimstore</a>
    </p>
</div>
HTML;

$sxe        = new SimpleXMLElement($html);
$attributes = $sxe->attributes();
$data_store = trim((string) $attributes['data-store']);
$title      = trim((string) $sxe->p[0]->a);
$price      = trim((string) $sxe->p[1]);

echo "{$data_store}\n{$title}\n{$price}\n";