Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式从HTML中提取图像-如何仅获取JPG?_Php_Regex_Jpeg - Fatal编程技术网

Php 正则表达式从HTML中提取图像-如何仅获取JPG?

Php 正则表达式从HTML中提取图像-如何仅获取JPG?,php,regex,jpeg,Php,Regex,Jpeg,我使用这个PHP函数获取任何给定HTML中的所有标记 为了只获取扩展名为JPG或JPEG的文件 非常感谢 ~src="[^"]*"~ i->不区分大小写的匹配Regex执行机构迟早会出现。还不如是我:) 正确的方法是使用适当的HTMLDOM解析器。这里有一个解决方案。它的用处在于,它比用正则表达式解析HTML更健壮,而且还使您能够同时访问或修改节点上的其他HTML属性 请参阅简单正则表达式解决方案的其他答案,或从我的foreach循环中的正则表达式中进行调整。您需要注意这里,以防有人在值周围使

我使用这个PHP函数获取任何给定HTML中的所有
标记

为了只获取扩展名为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;
}