0
$foo='abvgd';//最后是“s”$foos='abvgs';$bar=“any_string”;$foo_concat=$foo$巴;$foos_concat=$foos$巴;$foo_decode=rtrim($foo_concat,$bar);$foos_decode=rtrim($foos_concat,$bar);echo“\n$foo\t$foo_concat\t$foo_decode”;echo“\n$foos\t$foos_concat\t$foos_decode”;//$foo==$foo_decode//$foos!=美元$foos_decode(足球解码)

结果:

abvgd-abvgdany_string abvgd

abvgs abvgsany_string abv

“s”在哪里?)

1
  • 第二个参数:您还可以通过charlist参数指定要剥离的字符。只需列出要删除的所有字符。使用。。您可以指定一个字符范围。
    – 用户1646111
    评论 2013年8月2日11:18

3个答案

重置为默认值
5

rtrim()切断字符在第二个参数中。

这意味着它被切断了,n个,,_,,t吨,第页,,n个直到这些都不在字符串末尾。

如果你想模仿你的行为,您可以按以下方式进行:

<?php(电话)$totalString='这是我的any_string字符串any_strongany_strangany_string';$stringToCutOff=“any_string”;var_dump(rtrim_string($totalString,$stringToCutOff));//string(32)“这是我的any_string字符串”函数rtrim_string($string,$stringToCutOff){$stringToCutOffLength=strlen($stringToCutOff);while(substr($string,-$stringToCutOffLength)==$stringToCutOff){$string=子项($string,0,-$stringToCutOffLength);}返回$string;}?>

CODEPAD演示

2

第二个参数是要删除的所有字符的列表,“any_string”包含,因此这两个字符都从字符串末尾删除。

如果要从另一个字符串的末尾删除整个字符串,可以使用:

$str=preg_replace('#'。preg_quote($toRemove,'#')。'$#',''$str);

或者,如果您打算删除某个字符串末尾的所有重复:

$str=preg_replace('#('.preg_quote($toRemove,'#').')+$#',''$str);

(以及上述内容,在事件之间留有可选空格):

$str=preg_replace(“#(\s*”.preg_quote($toRemove,“#”)。”\s*)+$#',',$str);
4
  • 从技术上讲,正则表达式只匹配字符串的一个实例。添加括号和+$. 评论 2013年8月2日11:24
  • @h2ooooooo是的,这就是问题所在,如果他附加“any_string”,然后测试从末尾删除“any_string”的话,似乎替换1个实例就是目标。 评论 2013年8月2日11:25
  • 然而他在使用rtrim公司,它会一直移除直到什么都不存在(例如/([任意字符串]+)$/) 评论 2013年8月2日11:26
  • 1
    @是的,但他显然不知道该怎么做rtrim公司有效,否则这个问题就不在这里了。我将添加一个备选方案,因为我们无法确定目标是什么。 评论 2013年8月2日11:28
1

rtrim()从右侧删除与第二个参数匹配的字符,在您的示例中是其变量$巴.

它采用第二个参数($巴)作为查尔斯特,所以它把所有的信都单独拿出来。就你而言,$foos_concat=$foos$巴;//“abvgsany_string”.

所以它被移除了“gs”“abvgsany_string”,作为&是任何字符串的查尔斯特($巴).

$foos_concat(美元)曾经“abvgspany_string“具有“p”在里面,它会给你“abvgsp”作为其rtrim()和“p”不在第二个参数中($bar(美元))查尔斯特。

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.