PHP-如何删除扩展后的任何内容(jpg、png、gif、jpeg、svg等)
我正在使用PHP7并尝试删除URL扩展后的任何内容 范例PHP-如何删除扩展后的任何内容(jpg、png、gif、jpeg、svg等),php,Php,我正在使用PHP7并尝试删除URL扩展后的任何内容 范例 https://website/sites/tag/filename/IMG25.jpg?iabc=gfds to https://website/sites/tag/filename/IMG25.jpg 或 或 我正在尝试这个函数 $clean_url = preg_replace( "/(.+\.(:?jpg|gif|jp2|png|bmp|jpeg|svg)).*$/", '',
https://website/sites/tag/filename/IMG25.jpg?iabc=gfds
to
https://website/sites/tag/filename/IMG25.jpg
或
或
我正在尝试这个函数
$clean_url = preg_replace(
"/(.+\.(:?jpg|gif|jp2|png|bmp|jpeg|svg)).*$/",
'',
$filename
);
但此功能不起作用您可以通过以下方式执行: 首先使用“?”作为分隔符分解url字符串,然后使用结果数组的第一个元素
explode('?', $url)[0];
我对您的正则表达式进行了一些调整,以便捕获组并将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";
}
您想要的输出是什么?类似于“查看parse_url
just explode on?”:list($url,$qs)=explode(“?”,$url)这里的code>Duplicate不是真正的副本,因为这个询问者不想专门删除查询字符串。我投票决定重新开放。你的解决方案对“?”后删除很好。但对我来说,我想删除扩展后的任何内容,而不是问号。你是对的,我的不好,将尝试考虑另一个解决方案。现在第一个答案似乎是正确的。我的问题是不删除“?”后的内容问号;我的问题是如何删除扩展示例后的内容。jpg&hg=gfdi我注意到在第二个和第三个示例中您有一个&
,而在第一个示例中您有?
,它必须对这两种情况都有效吗?我已经更新了答案,您能看一下吗?是的,它有效,非常感谢您的欢迎。
$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";
}