我希望有一个函数来返回图像的src。应该通过xpath选择图像,该路径应传递给函数:
function getImgUrl($html, $xpath) {
$xpathkram = new DOMXPath(@DOMDocument::loadHTML($html));
$src = $xpathkram->evaluate('string(' . $xpath . '@src)');
return $src;
}
$xpath = '//*[@id="watch7-sidebar-modules"]/div[1]/div/div[2]/ul/li/div[2]/a/span/img';
$html = file_get_contents("https://www.youtube.com/watch?v=LNBjMRvOB5M";
echo getImgUrl($html, $xpath));
但由于某种原因,它拒绝工作并在第4行中陈述DOMXPath::evaluate(): Invalid expression
。
答案 0 :(得分:0)
您在代码中有一些语法错误:在file_get_contents("https://www.youtube.com/watch?v=LNBjMRvOB5M";
之后错过右括号,而在echo getImgUrl($html, $xpath));
处有两个括号而不是一个括号。
答案 1 :(得分:0)
首先将$ spath查询中的attribure'src'添加为'/ @ src':
$xpath = '//*[@id="watch7-sidebar-modules"]/div[1]/div/div[2]/ul/li/div[2]/a/span/img/@src';
你的错误在这里:
$src = $xpathkram->evaluate('string(' . $xpath . '@src)');
你应该写:
$src = $xpathkram->evaluate( $xpath );
结果是你收到的将是DOMNodeList对象。从中获取文本:
$list = getImgUrl($html, $xpath);
foreach ($list as $item){
var_dump($item->textContent);
}