如何使用PHP或正则表达式提取图像名称?

如何使用PHP或正则表达式提取图像名称?,php,regex,Php,Regex,我在MySQL中有以下数据 <p><img src="../../../../assets/images/frontpage/image1.png" alt="" width="790" height="356" /></p> 现在我想用PHP或正则表达式获取image2.png。扩展名可以是gif或jpg。图像名称的长度可以是任意长度。此代码应满足您的需要: <?php $regex = '@src[ ]*=[ ]*"[a-z/.]*/(.*?

我在MySQL中有以下数据

<p><img src="../../../../assets/images/frontpage/image1.png" 
alt="" width="790" height="356" /></p>


现在我想用PHP或正则表达式获取image2.png。扩展名可以是gif或jpg。图像名称的长度可以是任意长度。

此代码应满足您的需要:

<?php
$regex = '@src[ ]*=[ ]*"[a-z/.]*/(.*?\.(?:png|gif|jpg))@i"';
$match = array();
if (preg_match($regex, $html, $match)) {
    $imglocation = $match[1];
} else {
    die('Failed to find image name.');
}

这将匹配img标记中的路径,并在第一个内部捕获组中捕获文件

<?php
if (preg_match('%<img\s.*?src=".*?/?([^/]+?(\.gif|\.png|\.jpg))"%s', $subject, $regs)) {
    $image = $regs[1];
} else {
    $image = "";
}
?>

使用以下表达式:
var expr=/[a-z]+\(gif|jpg)$/

尝试以下操作:

$str = '<p><img src="../../../../assets/images/frontpage/image1.png" 
alt="" width="790" height="356" /></p>'; 
$imageType = end(explode(".")); 
$str='

'; $imageType=结束(分解(“.”);
$html='

'$正则表达式='src[]*=[]*“[a-zA-Z/]*/(.*?\(?:png | gif | jpg))”$匹配=数组();if(preg_match($regex,$html,$match)){$imglocation=$match[1];}else{die('Failed find image name.');}。这会产生以下错误。警告:preg_match()[function.preg match]:第19行的C:\xampp\htdocs\test\test1.php中的分隔符不能是字母数字或反斜杠,无法找到图像名称。哎呀,我忘了包含分隔符。现在添加。值得注意的是,您是想在多个img标记上匹配它,还是只在一个img标记上匹配它。当然,“我想用PHP或regex获取image2.png”的可能副本并不能真正告诉我们您要做什么。如何“获取”image2.png?您的示例有“image1.png”。这将输出将捕获全部更改为组所需的,../../../../assets/images/frontpage/image1.pngI。我认为它现在应该可以工作了。我在上面的代码中添加了以下内容,它就可以工作了$路径=分解(“/”,$image)$image_name=end($path);返回$image\u name;这将返回一个数组,这样您就可以通过数组的第0个索引获得image1.jpg:)@Tomalak我觉得它像Javascript。