如何在最后一次出现斜杠字符/
后删除字符串中的所有内容?
例如,字符串是:
http://localhost/new-123-rugby/competition.php?croncode=12345678
我想删除上一个/
之后的所有内容,以便它只显示:
http://localhost/new-123-rugby/
但/
之后的内容可能是一个可变长度。
请注意,网址中可能包含任意数量的斜杠。它需要能够删除最后一个斜杠后的内容。上面的示例中可能会显示更多内容。
答案 0 :(得分:2)
你可以试试这个
$url = "http://localhost/new-123-rugby/competition.php?croncode=12345678";
preg_match("/[^\/]+$/", $url, $matches);
$newUrl = str_replace($matches[0],'',$url);
echo $newUrl;
答案 1 :(得分:1)
substr()
+ strrpos()
:$string = 'http://localhost/new-123-rugby/competition.php?croncode=12345678';
$pos = strrpos($string, '/');
if ($pos !== FALSE) {
echo(substr($string, 0, $pos + 1));
}
函数strrpos()
找到字符串中/
出现最后的位置,substr()
提取所需的子字符串。
缺点:如果$string
不包含'/'
,则strrpos()
会返回FALSE
而substr()
不会返回我们想要的内容。需要首先检查strrpos()
返回的值。
explode()
+ implode()
:$string = 'http://localhost/new-123-rugby/competition.php?croncode=12345678';
$array = explode('/', $string);
if (count($array) > 1) {
array_pop($array); // ignore the returned value, we don't need it
echo(implode('/', $array).'/'); // join the pieces back, add the last '/'
}
或者,我们可以将最后一个组件设为空,而不是array_pop($array)
,而不需要在末尾添加额外的'/'
:
$string = 'http://localhost/new-123-rugby/competition.php?croncode=12345678';
$array = explode('/', $string);
if (count($array) > 1) {
$array[count($array) - 1] = ''; // empty the last component
echo(implode('/', $array)); // join the pieces back
}
缺点(对于这两个版本):如果$string
不包含'/'
,explode()
会生成一个包含单个值的数组,其余代码生成'/'
(第一段代码)或空字符串(第二段)。需要检查由explode()
生成的数组中的项目数。
preg_replace()
:$string = 'http://localhost/new-123-rugby/competition.php?croncode=12345678';
echo(preg_replace('#/[^/]*$#', '/', $string));
缺点:无。如果$string
包含'/'
且'/'
不包含$string
(在这种情况下它不会修改{{1}}),则效果很好。
答案 2 :(得分:-3)
对问题进行了编辑,以便原始答案(编辑下方)与OP的要求不匹配。它没有被标记为OP的编辑。
<小时/> 修改强>
更新了我的答案,现在它符合OP的要求:
(现在它可以使用任意数量的斜杠)
也可以使用
http://localhost/new-123-rugby////////competition.php?croncode=12345678
<?php
$url = "http://localhost/new-123-rugby/competition.php?croncode=12345678";
echo dirname($url) . "/";
?>
输出:
http://localhost/new-123-rugby/
这应该适合你:
<?php
$string = "http://localhost/new-123-rugby/competition.php?croncode=12345678";
echo $string = substr($string, 0, strpos(strrev($string), "/")-2);
?>
输出:
http://localhost/new-123-rugby/