我正在使用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
);
但是此功能不起作用
答案 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