Html 确保匹配以字符串开头的正则表达式

Html 确保匹配以字符串开头的正则表达式,html,regex,preg-match,Html,Regex,Preg Match,我正在一些HTML上运行一个正则表达式,需要提取一些图像标题标签 图像标题标签如下所示: title="Image Title Here" 这项任务很有效: (?<=title=").*?(?=") (?将DOMDocument与XPath一起使用应该不太容易出错: $html = <<<DATA <body> <h1>Text 1<img title="Not this"></h1> <h2>Text 2&

我正在一些HTML上运行一个正则表达式,需要提取一些图像标题标签

图像标题标签如下所示:

title="Image Title Here"
这项任务很有效:

(?<=title=").*?(?=")

(?将
DOMDocument
XPath
一起使用应该不太容易出错:

$html = <<<DATA
<body>
<h1>Text 1<img title="Not this"></h1>
<h2>Text 2<img title="Not this"></h2>
<h3>Text 3<img title="This"></h3>
</body>
DATA;

$dom = new DOMDocument('1.0', 'UTF-8');
$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);

$xpath = new DOMXPath($dom);
$imgs = $xpath->query('//h3/img[@title]');
$res = array();
foreach($imgs as $img) { 
   array_push($res, $img->getAttribute('title'));
}

print_r($res);
$html=getAttribute('title');
}
印刷品(港币);;


'//h3/img[@title]
xpath表达式将找到所有包含
img
子项的
h3
标记,这些子项包含
title
属性,
$img->getAttribute('title')
将从这些属性中获取值。

Regex和HTML不是好朋友,请使用解析器。谢谢,在我用url替换$HTMLvar之后,运行代码时会出现错误。另外,我只是想知道,如果我在另一个实际上是h1的标记或包含标题标记的标记上执行该操作,它会是“//h1[@title]”吗?要从URL获取数据,需要类似于
$html=file\u get\u contents('http://api.somesite.com');。请参阅帮助。这似乎工作得很好,出于某种原因,它在url上工作得很好,但在数组中获得了30个项目,然后发出警告:“警告:DOMDocument::loadHTML():意外结束标记:head-in-Entity,第15行C:\xampp\htdocs\Projects\test.php中的第132行”您知道如何解决这个问题吗?在获取URL内容后立即添加以下代码行:
libxml\u use\u internal\u errors(true)-这将尝试修复传入HTML中的问题。@zeddex让您了解如何加载其他图像:在浏览器中加载页面。打开开发人员工具的“网络”选项卡。向下滚动(或以任何方式加载更多图像)并记下HTTP请求。在PHP代码中复制相同的请求。
$html = <<<DATA
<body>
<h1>Text 1<img title="Not this"></h1>
<h2>Text 2<img title="Not this"></h2>
<h3>Text 3<img title="This"></h3>
</body>
DATA;

$dom = new DOMDocument('1.0', 'UTF-8');
$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);

$xpath = new DOMXPath($dom);
$imgs = $xpath->query('//h3/img[@title]');
$res = array();
foreach($imgs as $img) { 
   array_push($res, $img->getAttribute('title'));
}

print_r($res);