我排队'Delux Room_room'。我希望得到'Delux Room'作为结果。我尝试了以下代码。
以下代码给出以下结果。
echo $row.'<br/>';
echo rtrim($row, 'room') .'<br/>';
echo rtrim($row, '_room') .'<br/>';
结果; -
Delux Room_room
Delux Room_
Delux R
但我想要Delux Room。请帮帮我。
答案 0 :(得分:6)
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
方法精确。
答案 1 :(得分:0)
rtrim
的第二个参数是 set 字符。您必须编写自己的方法来删除特定的字符串:
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');
答案 2 :(得分:0)
除了@ lonesomeday的解决方案,如果您的上一个过去是可变长度:
$pos = strrpos($row, '_');
echo $substr($row, 0, $pos);
答案 3 :(得分:0)
您应该使用str_replace
代替rtrim
,如下所示:
echo $row.'<br/>';
echo str_replace('room', '', $row) .'<br/>';
echo str_replace('_room', '', $row) .'<br/>';