Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何替换http://和http://之后的第一个斜杠/之间的任何内容?_Php_Replace - Fatal编程技术网

Php 如何替换http://和http://之后的第一个斜杠/之间的任何内容?

Php 如何替换http://和http://之后的第一个斜杠/之间的任何内容?,php,replace,Php,Replace,我得到了一个url作为字符串,我想替换http://和first slash/之间的任何内容。在本例中,我想用video2.de.secondsite.net替换proxy-63.somesite.com。谁能告诉我怎么做?谢谢 注意:http://和第一个斜杠之间的数据是动态的,所以我不能只使用替换函数 http://proxy-63.somesite.com/sec(dfgghdfdgd987435392429324343241k)/video/600/500/12345678_mp4_h

我得到了一个url作为字符串,我想替换http://和first slash/之间的任何内容。在本例中,我想用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

原始URL每次都可能不同,preg_匹配将找到根

$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;
你可以用

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

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


FWIW https?://[^/]+//在问这个问题之前,您是否检查了一些正则表达式教程?正则表达式适用于此。到目前为止,您尝试了什么?PHP有很多和一些。你必须展示一个尝试,你不能只是说,请为我写我的代码旧域和新域之间的关系应该是什么?嗯。。。什么这是一个PHP问题,而不是一个如何重建相对或绝对URL的问题是的,我确实忽略了它只是PHP的事实,留待参考此参考在这里有何用处?@JanDvorak,因为在搜索如何在JS中执行相同操作时,可能会有人发现此问题。您的PHP解决方案中混合了JavaScript和PHP连接。http://部分不应是可选的。这重复了解析url可以为您完成的工作,非常感谢大家。测试后,我发现kevbot解决方案能够正确地进行更换。是否有帮助构建PrggMatter模式部分的在线工具?@ USER 178736考虑使用我发布的解决方案,不需要从您那里得到正则表达式,并且不太可能出现边缘情况问题。
$originalUrl = 'http://yourserver';
$parts = parse_url( $originalUrl);
$newServer = 'video2.de.secondsite.net';
$newUrl = $parts['scheme'] . '//' . $newServer . $parts['path'] . '?' . 
          $parts['query'] . '#' . $parts['fragment'];
location.protocol + '//' + 'video2.de.secondsite.net' +
location.pathname + location.search + location.hash