PHP preg_replace URL模式

时间:2015-03-29 16:32:55

标签: php regex preg-replace str-replace

我有以下网址结构:

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真的不太好,有人能帮帮我吗?

1 个答案:

答案 0 :(得分:3)

这应该适合你:

(这里我只是用basename()替换网址preg_replace()x\d+x\d+_\d+x_。最后我再次将网址与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_字面(区分大小写)