【问题标题】:How to extract image names with PHP or regex?如何使用 PHP 或正则表达式提取图像名称?
【发布时间】:2011-09-27 16:43:38
【问题描述】:

我在 MySQL 中有以下数据。

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

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

【问题讨论】:

标签: php regex


【解决方案1】:

使用这个表达式:var expr=/[a-z]+\.(gif|jpg)$/;

【讨论】:

  • 这将返回一个数组,因此您可以通过数组的第 0 个索引获取 image1.jpg :)
  • @Tomalak 对我来说它看起来像 Javascript。
【解决方案2】:

试试这个:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 这个输出,../../../assets/images/frontpage/image1.png
    • 我需要将全部捕获更改为组。我认为它现在应该可以工作了。
    • 我在上面的代码中添加了以下内容,它可以工作。 $path = explode('/', $image); $image_name = end($path);返回 $image_name;
    【解决方案4】:

    这段代码应该做你需要的:

    <?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.');
    }
    

    【讨论】:

    • $html = '

      '; $regex = 'src[ ]*=[ ]*"[a-zA-Z/.]*/(.*?\.(?:png|gif|jpg))"'; $match = 数组(); if (preg_match($regex, $html, $match)) { $imglocation = $match[1]; } else { die('找不到图片名称。'); }。这给出了以下错误。警告:preg_match() [function.preg-match]:第 19 行 C:\xampp\htdocs\test\test1.php 中的分隔符不能是字母数字或反斜杠 找不到图像名称。
    • 糟糕,我忘了包含分隔符。现已添加。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    相关资源
    最近更新 更多