Regex从url中选择路径以在preg_replace()中使用它


  1. 如何在php中使用regex选择http(s)://domain.tdl之后http(s)://domain.tdl/pathurl中的所有内容,以使/pathpreg_replace()中使用它作为搜索模式。

  2. 另一个问题:如何在一个字符串中用正则表达式填充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演示

相关内容

  • 没有找到相关文章

最新更新