PHP 在字符串中最后一次出现某个字符后删除字符
因此,测试用例字符串可能是:
http://example.com/?u=ben
或
http://example.com
我试图在最后一次出现“/”之后删除所有内容,但前提是它不是“http://”的一部分。这可能吗!?
到目前为止,我有这个:
$url = substr($url, 0, strpos( $url, '/'));
但是不起作用,在第一个“/”之后剥离所有内容。
因此,测试用例字符串可能是:
http://example.com/?u=ben
或
http://example.com
我试图在最后一次出现“/”之后删除所有内容,但前提是它不是“http://”的一部分。这可能吗!?
到目前为止,我有这个:
$url = substr($url, 0, strpos( $url, '/'));
但是不起作用,在第一个“/”之后剥离所有内容。
你必须使用 strrpos 函数而不是 strpos ;-)
substr($url, 0, strrpos( $url, '/'));
您应该使用为此类作业设计的工具,parse_url
网址.php
<?php
$urls = array('http://example.com/foo?u=ben',
'http://example.com/foo/bar/?u=ben',
'http://example.com/foo/bar/baz?u=ben',
'https://foo.example.com/foo/bar/baz?u=ben',
);
function clean_url($url) {
$parts = parse_url($url);
return $parts['scheme'] . '://' . $parts['host'] . $parts['path'];
}
foreach ($urls as $url) {
echo clean_url($url) . "\n";
}
例:
·> php url.php
http://example.com/foo
http://example.com/foo/bar/
http://example.com/foo/bar/baz
https://foo.example.com/foo/bar/baz