PHP-如何在扩展名后删除所有内容(jpg,png,gif,jpeg,svg等)

时间:2019-04-28 09:34:45

标签: php

我正在使用php 7,并尝试在扩展网址后删除所有内容;

示例

    https://website/sites/tag/filename/IMG25.jpg?iabc=gfds
    to 
    https://website/sites/tag/filename/IMG25.jpg

    https://website/sites/tag/filename/IMG25.png&iabc=gfds
    to 
    https://website/sites/tag/filename/IMG25.png

    https://website/sites/tag/filename/IMG25.jpeg&abc=gfds
    to 
    https://website/sites/tag/filename/IMG25.jpeg

我正在尝试此功能

$clean_url = preg_replace(
    "/(.+\.(:?jpg|gif|jp2|png|bmp|jpeg|svg)).*$/",
    '',
    $filename
);

但是此功能不起作用

2 个答案:

答案 0 :(得分:2)

我已经对您的正则表达式进行了一些调整,以便捕获组并仅将第一个组替换为url,如下所示:

$clean_url = preg_replace(
    "/(.+(\.(jpg|gif|jp2|png|bmp|jpeg|svg)))(.*)$/",
    '${1}',
    $url
);

所有情况下的示例代码:

<?php

$urls = [
    "https://website/sites/tag/filename/IMG25.png&iabc=gfds",
    "https://website/sites/tag/filename/IMG25.jpg?iabc=gfds",
    "https://website/sites/tag/filename/IMG25.jpeg&abc=gfds"
];


foreach ($urls as $url){
    $clean_url = preg_replace(
        "/(.+(\.(jpg|gif|jp2|png|bmp|jpeg|svg)))(.*)$/",
        '${1}',
        $url
    );

    echo $clean_url ."\n";

}

答案 1 :(得分:1)

您可以这样做:

首先使用'?'爆炸您的网址字符串。作为定界符,而不是使用结果数组的第一个元素。

:wq