Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php获取HTML标记内容_Php_Regex_File Get Contents - Fatal编程技术网

使用php获取HTML标记内容

使用php获取HTML标记内容,php,regex,file-get-contents,Php,Regex,File Get Contents,基本上,我使用phpfile\u get\u contents()从URL获取内容 在获取页面源之后,我必须从页面源的这一部分获取数据 <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

基本上,我使用php
file\u get\u contents()
URL
获取内容

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

<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>

14300菲律宾比索


因此,我必须使用SimpleXML获取
之间的数据,您可以将属性和DOM作为PHP对象进行访问。将file_get_contents的结果传递给SimpleXML,如下所示:

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

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

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


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

仅使用您提供的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";
attributes();
$data_store=trim((字符串)$attributes['data-store']);
$title=trim((字符串)$sxe->p[0]->a);
$price=trim((字符串)$sxe->p[1]);
echo“{$data\u store}\n{$title}\n{$price}\n”;

我会尝试一下,但告诉您我没有得到xml url,但您试图做的可能是a)侵犯版权和b)错误的方法。可能是的重复,但我必须从整个html中获取数据。此代码片段应该足以让您了解SimpleXML解析的工作原理。只需加载整个HTML并导航到对象中,直到到达所需的块。