我正在使用此PHP函数来获取任何给定HTML中的所有<img>
标记。
function extract_images($content)
{
$img = strip_tags(html_entity_decode($content),'<img>');
$regex = '~src="[^"]*"~';
preg_match_all($regex, $img, $all_images);
return $all_images;
}
这有效并返回 所有 图片(gif,png,jpg等)。
任何人都知道如何更改正则表达式...
~src="[^"]*"~
只能获取 JPG或JPEG 扩展名的文件?
非常感谢。
答案 0 :(得分:4)
Regex Enforcement Agency迟早会出现。它可能也是我:)。
正确的方法是使用正确的HTML DOM解析器。这是一个DOMDocument
解决方案。这样做的有用之处在于它比通过正则表达式解析HTML更强大,并且还使您能够同时访问或修改<img>
节点上的其他HTML属性。
$dom = new DOMDocument();
$dom->loadHTML($content);
// To hold all your links...
$links = array();
// Get all images
$imgs = $dom->getElementsByTagName("img");
foreach($imgs as $img) {
// Check the src attr of each img
$src = "";
$src = $img->getAttribute("src");
if (preg_match("/\.jp[e]?g$/i", $src) {
// Add it onto your $links array.
$links[] = $src;
}
查看简单正则表达式解决方案的其他答案,或者从我的foreach循环中的正则表达式进行调整。
答案 1 :(得分:2)
/src="[^"]*\.(jpg|jpeg)"/i
i - &gt;不区分大小写的匹配