我想使用正则表达式在最后一个斜杠和问号之间提取文件名 我读了一些相关的答案
([^/]*$)
但我有几个域名,所以我想提取特定名称的文件名,并寻找适用于所有域名的正则表达式。 我如何将其限制在某些域名? 我的目标是替换域名,
http://old.domain.com/asda/dsdasd/fsdfd/bvc/filename.mp4?fdgfsdgfgfsgf
http://new.domain.com/filename.mp4
此致
答案 0 :(得分:1)
对于您的此特定问题,请使用此解决方案,或者请使用示例
详细说明您的问题<?php
$url = 'http://old.domain.com/asda/dsdasd/fsdfd/bvc/filename.mp4?fdgfsdgfgfsgf';
//var_dump(parse_url($url));
$scheme= parse_url($url, PHP_URL_SCHEME); // http
$host = parse_url($url, PHP_URL_HOST); //old.domain.com
$path = parse_url($url, PHP_URL_PATH); //asda/dsdasd/fsdfd/bvc
$filename = basename($path); //filename.mp4
echo $newUrl = $scheme.'//new.domain.com/'.$filename;
?>
输出
http//new.domain.com/filename.mp4
有关parse_url
的更多信息,请阅读http://php.net/manual/en/function.parse-url.php
答案 1 :(得分:0)
你可以尝试
preg_replace('/(.*:\/\/).*\/(.*?)(\?.*|$)/', '$1new.domain.com/$2', $url );
用新的域替换完整的域和路径。
修改强>
或者,如果您确实需要提取文件名(正如您在问题中所说),请尝试
preg_match('/[^\/]+?(?=\?|$)/', $url, $matches);