得不到data-title,就data-slug

Can't get data-title, just data-slug

HTML

<article class="movie-summary" data-slug="slug-goes-here" data-title="This is a Title">
...
...
</article>

PHP

$html = file_get_html( 'example.com' );
foreach( $html->find('article') as $data) {
    $property = 'data-title';
    echo $data->$property;
}

大家好,我希望能够从特定站点的所有文章中获取全部 data-title。在 this post

的帮助下,当我使用 data-slug 时,我得到了数据,但是当我使用 data-title 时,我什么也得不到

这只是工作正常,验证结果

<?php
include 'simple_html_dom.php';
$html = str_get_html('<article class="movie-summary" data-slug="slug-goes-here" data-title="This is a Title"></article>');

    foreach( $html->find('article') as $data) {
        $property = 'data-title';
        echo $data->$property;
    }

?>

https://sourceforge.net/projects/simplehtmldom/files/

获得文件 'simple_html_dom.php'

输出:

如果您查看您尝试解析的实际 HTML 代码(注释中提供的 link),您会发现它无效:

<article  class="movie-summary hero" data-slug="aiyaary-hindi"data-title="Aiyaary">
...
</article>

意思是,data-slugdata-title属性之间没有space。所以要解决这个问题,我建议添加必要的 spaces。像这样:

function placeNeccessarySpaces($contents) {
    return preg_replace('/"data-title/', '" data-title', $contents);
}

这类似于this answer。那么:

$contents = placeNeccessarySpaces(file_get_contents('http://example.com'));
$html = str_get_html($contents);
foreach( $html->find('article') as $data) {
    $property = 'data-title';
    echo $data->$property;
}