【问题标题】:PHP preg_replace URL patternPHP preg_replace URL 模式
【发布时间】:2015-06-02 14:44:52
【问题描述】:

我的 URL 结构如下:

http://website.com/images/folder1/folder2/123456/x500x1000_2x_ImageName.jpg

我需要从图像名称中删除裁剪分辨率“x500x1000_2x_”,如下所示:

http://website.com/uploads/folder1/folder2/123456/ImageName.jpg

我尝试了很多东西:

$img = preg_replace('/\[x](\d+)[x](\d+)[_2x_]\.*/', '', $img);
$img = preg_replace('/[x]\d[x]\d[_2x_]\.*/', '', $img);
$img = preg_replace('/\/\[x]+\d+[x]+\d+\D+\d\.*/', '', $img);

我真的不擅长 preg_replace,有人可以帮帮我吗?

【问题讨论】:

    标签: php regex preg-replace str-replace


    【解决方案1】:

    这应该适合你:

    (这里我只是将url的basename()中的x\d+x\d+_\d+x_替换为preg_replace()。最后我只是将url再次与dirname()连接在一起)

    <?php
    
        $img = "http://website.com/images/folder1/folder2/123456/x500x1000_2x_ImageName.jpg";
        echo $img = dirname($img) . "/" . preg_replace("/x\d+x\d+_\d+x_/", "", basename($img));
    
    ?>
    

    输出:

    http://website.com/images/folder1/folder2/123456/ImageName.jpg
    

    正则表达式解释:

    x\d+x\d+_\d+x_
    
    • x 匹配字符 x 的字面意思(区分大小写)
    • \d+ 匹配一个数字 [0-9]
      • 量词:+在一次到无限次之间,尽可能多次,按需回馈[贪心]
    • x 匹配字符 x 的字面意思(区分大小写)
    • \d+ 匹配一个数字 [0-9]
      • 量词:+在一次到无限次之间,尽可能多次,按需回馈[贪心]
    • _ 匹配字符 _ 字面意思
    • \d+ 匹配一个数字 [0-9]
      • 量词:+在一次到无限次之间,尽可能多次,按需回馈[贪心]
    • x_ 与字符 x_ 逐字匹配(区分大小写)

    【讨论】:

    • 我正要写如果名称包含下划线但您已经更改它会导致问题。 :-) +1
    • 谢谢!效果很好! (实际上肯定是其他人编辑过的,不是我):-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多