PHP - 如何提取指定链接图像的 achor href?
PHP - How to extract achor href of specified linked image?
我如何根据图像 src 提取给定 HTML 的锚 href?
示例:
<a href="http://idontneedthis.com"><img src="path/to/image/1.gif" /></a>
<a href="http://iwantthis.com"><img src="path/to/image/2.gif" /></a>
<a href="http://idontneedthisagain.com"><img src="path/to/image/3.gif" /></a>
在这种情况下,我需要获取 link 的 linked 图像,其 src 为 2.gif
。那将是具有 href http://iwantthis.com
的锚点
使用正则表达式来解决这类问题不是一个好主意,而且很可能会导致无法维护和不可靠的代码。最好给我们一个 HTML 解析器。
如果您仍然想使用正则表达式,可以尝试:
preg_match_all('%href="(.*?)".*?src="path/to/image/2\.gif"%i', $html, $match, PREG_PATTERN_ORDER);
$href = $match[1][0];
echo $href ;
输出:
http://iwantthis.com
这里有一种方法可以利用 DOM 和 XPath 来提取那些 @href 值。
$doc = DOMDocument::loadHTML('
<a href="http://idontneedthis.com"><img src="path/to/image/1.gif" /></a>
<a href="http://iwantthis.com"><img src="path/to/image/2.gif" /></a>
<a href="http://idontneedthisagain.com"><img src="path/to/image/3.gif" /></a>
');
$xpath = new DOMXPath($doc);
$links = $xpath->query('//a[img[contains(@src, "2.gif")]]');
foreach ($links as $link) {
echo $link->getAttribute('href');
}
输出
http://iwantthis.com
我如何根据图像 src 提取给定 HTML 的锚 href?
示例:
<a href="http://idontneedthis.com"><img src="path/to/image/1.gif" /></a>
<a href="http://iwantthis.com"><img src="path/to/image/2.gif" /></a>
<a href="http://idontneedthisagain.com"><img src="path/to/image/3.gif" /></a>
在这种情况下,我需要获取 link 的 linked 图像,其 src 为 2.gif
。那将是具有 href http://iwantthis.com
使用正则表达式来解决这类问题不是一个好主意,而且很可能会导致无法维护和不可靠的代码。最好给我们一个 HTML 解析器。
如果您仍然想使用正则表达式,可以尝试:
preg_match_all('%href="(.*?)".*?src="path/to/image/2\.gif"%i', $html, $match, PREG_PATTERN_ORDER);
$href = $match[1][0];
echo $href ;
输出:
http://iwantthis.com
这里有一种方法可以利用 DOM 和 XPath 来提取那些 @href 值。
$doc = DOMDocument::loadHTML('
<a href="http://idontneedthis.com"><img src="path/to/image/1.gif" /></a>
<a href="http://iwantthis.com"><img src="path/to/image/2.gif" /></a>
<a href="http://idontneedthisagain.com"><img src="path/to/image/3.gif" /></a>
');
$xpath = new DOMXPath($doc);
$links = $xpath->query('//a[img[contains(@src, "2.gif")]]');
foreach ($links as $link) {
echo $link->getAttribute('href');
}
输出
http://iwantthis.com