Sky*_*Rar 0 php regex preg-replace regex-group regex-greedy
如何从网址中删除除基本网址和第一部分以外的所有部分。零件数量不确定。基本网址是可变的。我尝试了一些正则表达式,但没有成功。
$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;
Run Code Online (Sandbox Code Playgroud)
在这里,我们可以使用preg_replace带有简单表达式的,可能类似于:
(.+\.com\/.+?\/).+
Run Code Online (Sandbox Code Playgroud)
我们使用以下捕获组来捕获所需的输出:
(.+\.com\/.+?\/)
Run Code Online (Sandbox Code Playgroud)
然后滑动到字符串的末尾并替换为$1。
$re = '/(.+\.com\/.+?\/).+/m';
$str = 'http://www.example.com/part1/part2/part3/part4';
$subst = '$1';
$result = preg_replace($re, $subst, $str);
echo $result;
Run Code Online (Sandbox Code Playgroud)
jex.im可视化正则表达式:
对于所有域,.com无论是否存在,我们都可以使用以下表达式来解决:
(.+\..+?\/.+?\/).+
Run Code Online (Sandbox Code Playgroud)
$re = '/(.+\..+?\/.+?\/).+/m';
$str = 'http://www.example.com/part1/part2/part3/part4';
$subst = '$1';
$result = preg_replace($re, $subst, $str);
echo $result;
Run Code Online (Sandbox Code Playgroud)