-
如何在php中使用regex选择
http(s)://domain.tdl
之后http(s)://domain.tdl/path
url中的所有内容,以使/path
在preg_replace()
中使用它作为搜索模式。 -
另一个问题:如何在一个字符串中用正则表达式填充
preg_replace()
参数,以便从原始的完整urlhttp(s)://domain.tdl/path
仅获得http(s)://domain.tdl
。
我无法更改php脚本的代码,并且我从web表单发送preg_replace()
参数。我只能在该web表单中传递preg_replace((的@pattern
和@replacement
参数。
p.S.URL和域名总是不同的。
谢谢!
在我看来,你只想获得带有协议的域,以及末端的路径。如果是的话,试试这个:
$url = 'https://domain.tdl/path';
$urlArr = parse_url($url);
var_dump("$urlArr[scheme]://$urlArr[host]"); // Returns http://domain.tdl
var_dump($urlArr['path']); // Returns /path
eval.in演示
有趣的是,它使用PHP的parse_url
函数来解析url。
或者,如果你真的需要使用regex,可以试试这个:
$url = 'https://domain.tdl/path';
preg_match('/(https?://(?:www.)?[a-z]+.[a-z]+)(/.*)/i', $url, $matches);
var_dump($matches[1]); // Returns http://domain.tdl
var_dump($matches[2]); // Returns /path
regex101链接,eval.in演示