我有'Delux Room_room'这一行。我希望得到'Delux Room'。我尝试了以下代码。带下划线的rtrim在php
以下代码给出以下结果。
echo $row.'<br/>';
echo rtrim($row, 'room') .'<br/>';
echo rtrim($row, '_room') .'<br/>';
结果; -
Delux Room_room
Delux Room_
Delux R
但我想多彩客房。请帮帮我。
我有'Delux Room_room'这一行。我希望得到'Delux Room'。我尝试了以下代码。带下划线的rtrim在php
以下代码给出以下结果。
echo $row.'<br/>';
echo rtrim($row, 'room') .'<br/>';
echo rtrim($row, '_room') .'<br/>';
结果; -
Delux Room_room
Delux Room_
Delux R
但我想多彩客房。请帮帮我。
echo rtrim($row, '_room') .'<br/>';
,说:“从字符串的结尾删除字符,直到你到达一个不是_
,r
,o
或m
。”这显然不是你的意思。从the PHP manual:
$charlist
您还可以通过charlist参数指定要剥离的字符。只需列出您想要剥离的所有角色。用..你可以指定一个字符范围。
您提供了一个字符列表,而不是您想要删除的字符串。
你应该使用substr
代替:
echo substr($row, 0, -5); // remove the last 5 characers
另一种解决方案是使用str_replace
更换不必要的字符串:
echo str_replace($row, '_room', ''); // replace "_room" with an empty string
注意,这是比substr
方法不太精确。
rtrim
的第二个参数是设置为的字符。你必须写自己的方法来删除,而不是一个特定的字符串:
function rtrim_str($str, $trim) {
if (substr($str, -strlen($trim)) == $trim) {
return substr($str, 0, -strlen($trim));
}
return $str; // String not present at end
}
echo rtrim_str($row, '_room');
或者改为@ lonesomeday的解决方案,如果你的最后一个过去的长度是可变的:
$pos = strrpos($row, '_');
echo $substr($row, 0, $pos);
您应该使用str_replace
代替rtrim
,像这样:
echo $row.'<br/>';
echo str_replace('room', '', $row) .'<br/>';
echo str_replace('_room', '', $row) .'<br/>';