-5

我有一个 url 作为字符串,我想替换http://和第一个斜杠/之间的任何内容(在这个例子中,我想用video2.de.secondsite.net替换proxy-63.somesite.com)。谁能告诉我这是怎么做到的?谢谢

注意: http://和第一个斜杠之间的数据是动态的,所以我不能只使用替换功能!

 http://proxy-63.somesite.com/sec(dfgghdfdgd987435392429324343241k)/video/600/500/12345678_mp4_h264_aac_2.m3u8

replaced with :

 http://video2.de.secondsite.net/sec(dfgghdfdgd987435392429324343241k)/video/600/500/12345678_mp4_h264_aac_2.m3u8
4

2 回答 2

4

您可以使用parse_url

$originalUrl = 'http://yourserver';
$parts = parse_url( $originalUrl);
$newServer = 'video2.de.secondsite.net';
$newUrl = $parts['scheme'] . '//' . $newServer . $parts['path'] . '?' . 
          $parts['query'] . '#' . $parts['fragment'];

在盲目添加 # 和 ? 之前,您可能需要更加小心并实际测试是否存在查询和片段。

这是一个 JS 解决方案,因为我已经把它写下来了,你甚至不必测试 ? 和 # 因为它们是location.hash和的一部分location.search

location.protocol + '//' + 'video2.de.secondsite.net' +
location.pathname + location.search + location.hash
于 2013-08-13T01:03:24.360 回答
1

每次原来的 URL 可以不同,preg_match 会找到根。

$url = 'http://proxy-63.somesite.com/sec(dfgghdfdgd987435392429324343241k)/video/600/500/12345678_mp4_h264_aac_2.m3u8';
preg_match('@^(?:http://)?([^/]+)@i', $url, $domain);
$host = $domain[1];
$newUrl = str_replace($host, 'video2.de.secondsite.net', $url);
echo $newUrl;
于 2013-08-13T00:57:04.670 回答