如何获得URL的一部分?

时间:2019-05-28 23:59:04

标签: php regex preg-replace regex-group regex-greedy

如何从URL中删除除基本URL和第一部分以外的所有部分。零件数量不确定。基本网址是可变的。我尝试了一些正则表达式,但没有成功。

$url =  http://www.example.com/part1/part2/part3/part4;
base_url = parse_url($url, PHP_URL_HOST); // Outputs www.example.com

$desired_output = http://www.example.com/part1;

1 个答案:

答案 0 :(得分:4)

在这里,我们可以使用带有简单表达式的preg_replace,也许类似于:

(.+\.com\/.+?\/).+

我们使用以下捕获组捕获所需的输出:

(.+\.com\/.+?\/)

,然后滑动到字符串的末尾并用$1替换。

测试

$re = '/(.+\.com\/.+?\/).+/m';
$str = 'http://www.example.com/part1/part2/part3/part4';
$subst = '$1';

$result = preg_replace($re, $subst, $str);

echo $result;

DEMO

RegEx电路

jex.im可视化正则表达式:

enter image description here


对于是否所有.com域,我们都可以使用以下表达式来解决它:

(.+\..+?\/.+?\/).+

测试

$re = '/(.+\..+?\/.+?\/).+/m';
$str = 'http://www.example.com/part1/part2/part3/part4';
$subst = '$1';

$result = preg_replace($re, $subst, $str);

echo $result;

Demo