Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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_Html_Curl - Fatal编程技术网

Php 从HTML的内容中提取数据

Php 从HTML的内容中提取数据,php,html,curl,Php,Html,Curl,我正试图从HTML中提取数据。我使用curl实现了这一点,但我只需要将标题传递给另一个变量: <meta property="og:url" content="https://example.com/"> 如何提取,还有更好的方法吗?您应该使用解析器从HTML文件/字符串/文档中提取值。下面是一个使用domdocument的示例 $string = '<meta property="og:url" content="https://example.com/">'

我正试图从HTML中提取数据。我使用curl实现了这一点,但我只需要将标题传递给另一个变量:

<meta  property="og:url" content="https://example.com/">


如何提取,还有更好的方法吗?

您应该使用解析器从HTML文件/字符串/文档中提取值。下面是一个使用domdocument的示例

$string = '<meta  property="og:url" content="https://example.com/">';
$doc = new DOMDocument();
$doc->loadHTML($string);
$metas = $doc->getElementsByTagName('meta');
foreach($metas as $meta) {
    if($meta->getAttribute('property') == 'og:url') {
        echo $meta->getAttribute('content');
    }
}
$string='';
$doc=新的DOMDocument();
$doc->loadHTML($string);
$metas=$doc->getElementsByTagName('meta');
foreach($metas作为$meta){
如果($meta->getAttribute('property')=='og:url'){
echo$meta->getAttribute('content');
}
}
输出:


如果您是从远程位置而不是本地字符串加载HTML,则可以使用DOM进行加载,方法如下:

libxml_use_internal_errors(TRUE);
$dom = new DOMDocument;
$dom->loadHTMLFile('https://evernote.com');
libxml_clear_errors();
$xp = new DOMXpath($dom);
$nodes = $xp->query('//meta[@property="og:url"]');
if(!is_null($nodes->item(0)->attributes)) {
    foreach ($nodes->item(0)->attributes as $attr) {
        if($attr->value!="og:url") {
            print $attr->value; 
        }
    }
}
这将输出预期值:

https://evernote.com/