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

时间:2012-05-24 23:33:18

标签: php substring

因此测试用例字符串可能是:

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

或者

http://example.com

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

到目前为止,我有这个:

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

但是不起作用,先把'/'剥离掉所有东西。

4 个答案:

答案 0 :(得分:80)

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

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

答案 1 :(得分:13)

您应该使用专为此类工作设计的工具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

答案 2 :(得分:1)

实际上,你想要实现的更简单的解决方案是使用PHP的一些字符串操作函数。

首先,您需要找到最后一次出现的&#39; /&#39;的位置。你可以使用strrpos()函数来做到这一点(小心,它是2 r);

然后,如果您将此位置作为负值提供,作为substr()函数的第二个参数,它将从末尾开始搜索子字符串。

第二个问题是你想要的结果是最后一个&#39; /&#39;左边的字符串部分。要实现此目的,您必须为第三个参数提供带负值的substr(),这将指示要删除的字符数。

要确保需要移除多少个参数,您必须在&#39; /&#39;的右侧提取字符串部分。首先,然后计算它的长度。

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

答案 3 :(得分:0)

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

  

echo str_replace(“http://”,“”,$ str);