PHP在字符串中最后一次出现字符后删除字符

ben*_*e89 24 php substring

所以测试用例字符串可能是:

http://example.com/?u=ben
Run Code Online (Sandbox Code Playgroud)

要么

http://example.com
Run Code Online (Sandbox Code Playgroud)

我试图在最后一次'/'之后删除所有内容,但前提是它不是'http://'的一部分.这可能吗!?

到目前为止我有这个:

$url = substr($url, 0, strpos( $url, '/'));
Run Code Online (Sandbox Code Playgroud)

但是没有用,先把'/'剥掉一切.

小智 87

你必须使用strrpos函数而不是strpos ;-)

substr($url, 0, strrpos( $url, '/'));
Run Code Online (Sandbox Code Playgroud)

  • 我认为这是问题标题的最佳答案!如果不是这个答案,我会将标题编辑为"...... URL中的字符". (7认同)

sbe*_*rry 14

您应该使用为此类作业而设计的工具parse_url

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";
}
Run Code Online (Sandbox Code Playgroud)

例:

·> 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
Run Code Online (Sandbox Code Playgroud)