PHP去除字符串中的字符一个字符的最后出现之后(PHP remove characters afte

2019-07-29 13:00发布

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

http://example.com/?u=ben

要么

http://example.com

我想要的“/”最后一次出现后去除一切,但只有当它不是一部分的“http://”。 这可能吗!?

我有这个至今:

$url = substr($url, 0, strpos( $url, '/'));

但不工作,第一个“/”后剥去了一切。

Answer 1:

你应该使用专为这种类型作业的工具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";
}

例:

·> 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


Answer 2:

您必须使用strrpos函数没有strpos ;-)

substr($url, 0, strrpos( $url, '/'));


Answer 3:

事实上,一个简单的解决方案,你想达到什么是PHP的一些字符串操作功能的发挥。

首先,你需要找到的“/”中最后出现的位置。 您可以通过使用strrpos()函数做到这一点(注意,这是与2 R);

然后,如果你提供这个位置为负值,作为第二个参数来SUBSTR()函数,它将开始搜索从最终的子串。

第二个问题是您要为结果字符串的一部分是在最后的“/”的左侧。 要做到这一点,你必须提供SUBSTR()为负值的第三个参数,这将表明你想有多少个字符删除。

可以肯定的,你需要多少参数删除,你将不得不的“/”右第一提取字符串部分,再算上它的长度。

//so given this url:
$current_url = 'http://example.com/firstslug/84'

//count how long is the part to be removed
$slug_tbr = substr($current_url, strrpos($current_url, '/')); // '/84'

$slug_length = strlen(slug_tbr); // (3)

/*get the final result by giving a negative value 
to both second and third parameters of substr() */
$back_url = substr($current_url, -strrpos($current_url, '/'), -$slug_length);

//result will be http://example.com/firstslug/


Answer 4:

$cutoff = explode("char", $string); 
echo $cutoff[0]; // 2 for what you want and 3 for the index

回声str_replace函数( “HTTP://”, “”,$海峡);



文章来源: PHP remove characters after last occurrence of a character in a string
标签: php substring