Php 正则表达式从HTML中提取图像-如何仅获取JPG?
我使用这个PHP函数获取任何给定HTML中的所有Php 正则表达式从HTML中提取图像-如何仅获取JPG?,php,regex,jpeg,Php,Regex,Jpeg,我使用这个PHP函数获取任何给定HTML中的所有标记 为了只获取扩展名为JPG或JPEG的文件 非常感谢 ~src="[^"]*"~ i->不区分大小写的匹配Regex执行机构迟早会出现。还不如是我:) 正确的方法是使用适当的HTMLDOM解析器。这里有一个解决方案。它的用处在于,它比用正则表达式解析HTML更健壮,而且还使您能够同时访问或修改节点上的其他HTML属性 请参阅简单正则表达式解决方案的其他答案,或从我的foreach循环中的正则表达式中进行调整。您需要注意这里,以防有人在值周围使
标记
为了只获取扩展名为JPG或JPEG的文件
非常感谢
~src="[^"]*"~
i->不区分大小写的匹配Regex执行机构迟早会出现。还不如是我:) 正确的方法是使用适当的HTMLDOM解析器。这里有一个解决方案。它的用处在于,它比用正则表达式解析HTML更健壮,而且还使您能够同时访问或修改
节点上的其他HTML属性
请参阅简单正则表达式解决方案的其他答案,或从我的foreach循环中的正则表达式中进行调整。您需要注意这里,以防有人在值周围使用单个引号。谢谢@peter-现在我将使用DOMDocument,如下所示,但您的正则表达式有效fine@michael这句话怎么说?“当您试图用正则表达式解决一个问题时,实际上有两个问题?”:)--对于您的代码,我将看看是否可以实现it@torr有些人在遇到问题时会想“我知道,我会使用正则表达式。”现在他们有两个问题了看起来您的代码正常工作,但我遇到了一系列错误,比如属性的
名称空间前缀fb,比如:布局未在实体中定义,第179行和htmlparserentityref:expecting';'在实体中,第349行
——我想知道这是否是因为无效的标记。我通过文件获取内容
导入HTML。您认为在这里使用@$dom->loadHTML($content)
抑制错误是一种不好的做法吗?@torr Try设置$dom->strigerrorchecking=FALSE代码>。否则,simplexml\u load\u string()
可能比DOMDocument更宽容?@torr否则,如果您无法控制两端,则禁止在其上显示警告可能不会有什么坏处。(请不要因为我这么说就投我一票!)
~src="[^"]*"~
/src="[^"]*\.(jpg|jpeg)"/i
$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;
}