如何使用PHP从给定的文本中导出第一个图像链接


How to export first image link from given text with PHP?

我想用PHP从给定的文本中导出第一个图像链接。假设我有这样的文本:

Lorem ipsum <img rel="lorem" src="lorem.jpg"/> dolor sit amet, consectetuer <IMG src="ipsu.jpg" rel="ipsum"/ >

我需要将lorem.jpg导出到PHP中的变量中。因此,例如,最后$variable必须等于lorem.jpg
我使用了正则表达式、stripos等函数,但每次都会出现一些问题
如果你有任何解决这个问题的想法,请帮忙。

正则表达式可以用于各种各样的任务,但在解析HTMLDOM时通常会失败。HTML的问题在于,文档的结构变化很大,很难准确提取标记。

我们可以使用DOM解析器,如SimpleHTML

你可以像这样使用它:

$html = 'Lorem ipsum <img rel="lorem" src="lorem.jpg"/> dolor sit amet, consectetuer <img src="ipsu.jpg" rel="ipsum"/ > ';
$first_image_source = get_first_image($html);
echo $first_image_source;
function get_first_image($html){
  require_once('simple_html_dom.php');
  $post_dom = str_get_html($html);
  $first_img = $post_dom->find('img', 0);
  if($first_img !== null) {
      return $first_img->src;
  }
  return null;
}

您也可以用同样的方式获取图像的alt属性。

如果你想获得所有图像的来源,那么你可以使用:

function get_images($html){
     require_once('simple_html_dom.php')
     $post_dom = str_get_html($html);
     $img_tags = $post_dom->find('img');
     $images = array();
     foreach($img_tags as $image) {
        $images[] = $image->src;
     }
     return $images;
  }

希望这有帮助:):)

每个人都会告诉你,你真的需要使用html解析器而不是regex(这是真的),因为在很多情况下regex无法解析有效的html。话虽如此,如果你绝对确定html将是这种格式去

preg_match('/src="([^"]*)"/i',$html,$matches);
$image = $matches[1];

如果您需要的不止第一个,请使用preg_match_all。祝你好运

网络上有许多资源会告诉您,不建议使用正则表达式来解析DOM元素。有几个PHP DOM库可以用于您想要使用它的确切目的,即HTML解析。

SimpleHTMLDOM库只是可以用于从页面中提取DOM元素的库的一个示例。

看起来我不能对其他人的答案发表评论。这只是黑客艺术家回复的延伸。

下面是一个正则表达式,用于查找图像链接中的第一个源。因为src="([^"]*)"可能也与iframe中的src匹配。

<img(?:[^>]+)src="([^"]*)"