PHP DOM:使用DOM获取属性

时间:2016-06-03 12:26:42

标签: php dom

我正在使用PHPDocumentDOMXPath。我试图获取具有json类型值的属性。但我没有得到确切的价值。我可以很好地得到其他属性但不是这个。 HTML看起来像

<a href="URL" title="{tt4438848=Nicholas Stoller (dir.), Seth Rogen, Rose Byrne, tt2567026=James Bobin (dir.), Mia Wasikowska, Johnny Depp, tt3498820=Anthony Russo (dir.), Chris Evans, Robert Downey Jr., tt2948356=Byron Howard (dir.), Ginnifer Goodwin, Jason Bateman, tt3385516=Bryan Singer (dir.), James McAvoy, Michael Fassbender, tt1985949=Clay Kaytis (dir.), Jason Sudeikis, Josh Gad, tt3068194=Whit Stillman (dir.), Kate Beckinsale, Chloë Sevigny, tt3799694=Shane Black (dir.), Russell Crowe, Ryan Gosling, tt3040964=Jon Favreau (dir.), Neel Sethi, Bill Murray, tt2241351=Jodie Foster (dir.), George Clooney, Julia Roberts}">X-Men: Apocalypse</a>

如果我使用echo $dom->getAttribute("href");,则输出为URL
如果我使用echo $dom->getAttribute("title");,则输出为Bryan Singer (dir.), James McAvoy, Michael Fassbender

我无法获得确切的属性值。

修改 链接phpfiddle.org/main/code/dvj5-zf0q

任何人都可以帮忙吗?我是PHPDOM的新手。提前致谢

1 个答案:

答案 0 :(得分:2)

获取title属性:

title

请注意,\w+=((?:(?!(?:, tt)).)+) 不包含json字符串,而是一些自定义实现 见a demo on ideone.com

<小时/> 要实际获取信息,您可以使用一些regular expressions,如下所示:

$regex = '~\w+=((?:(?!(?:, tt)).)+)~';
foreach ($links as $link) {
    preg_match_all($regex, $link->getAttribute('title'), $actors);
    print_r($actors);
}

根据您的问题分解:

Handle

同时查看此演示文稿on ideone.com