PHP 在字符串中最后一次出现字符后删除字符
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/10746695/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
PHP remove characters after last occurrence of a character in a string
提问by benhowdle89
So the test case string may be:
所以测试用例字符串可能是:
http://example.com/?u=ben
Or
或者
http://example.com
I'm trying to remove everything after the last occurrence of a '/' but only if it's not part of the 'http://'. Is this possible!?
我试图在最后一次出现“/”之后删除所有内容,但前提是它不是“http://”的一部分。这可能吗!?
I have this so far:
到目前为止我有这个:
$url = substr($url, 0, strpos( $url, '/'));
But does not work, strips off everything after first '/'.
但不起作用,在第一个“/”之后剥离所有内容。
采纳答案by sberry
You should use the tool that is designed for this type of job, parse_url
您应该使用专为此类作业设计的工具parse_url
url.php
网址.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";
}
Example:
例子:
·> 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
回答by user2422121
You must use strrpos function not strpos ;-)
您必须使用 strrpos 函数而不是 strpos ;-)
substr($url, 0, strrpos( $url, '/'));
回答by Lanci
Actually, a simpler solution to what you want to achieve is to play with a few string manipulation functions of PHP.
实际上,您想要实现的更简单的解决方案是使用 PHP 的一些字符串操作函数。
First of all, you need to find the position of the last occurrence of the '/'. You can do this by using the strrpos() function (be careful, it is with 2 r);
首先,您需要找到最后一次出现“/”的位置。你可以通过使用 strrpos() 函数来做到这一点(小心,它是 2 r);
Then, if you provide this position as a negative value, as a second parameter to the substr() function, it will start the search of the substring from the end.
然后,如果您将此位置作为负值提供,作为 substr() 函数的第二个参数,它将从末尾开始搜索子字符串。
The second problem is that you want as result the part of the strings that is at the LEFT of the last '/'. To achieve this, you will have to provide substr() with a negative value to the third parameter which will indicate how many characters you want to remove.
第二个问题是您希望得到最后一个“/”左侧的字符串部分。为此,您必须为 substr() 提供第三个参数的负值,该参数将指示您要删除的字符数。
To be sure of how many parameters you need to remove, you will have to extract the string part at the RIGHT of the '/' first, and then count its length.
要确定需要删除多少参数,您必须先提取“/”右侧的字符串部分,然后计算其长度。
//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/
回答by Seb
$cutoff = explode("char", $string);
echo $cutoff[0]; // 2 for what you want and 3 for the index
also
还
echo str_replace("http://", "", $str);
echo str_replace("http://", "", $str);

