2011-09-13 55 views
-1

我有'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 

但我想多彩客房。请帮帮我。

回答

6
echo rtrim($row, '_room') .'<br/>'; 

,说:“从字符串的结尾删除字符,直到你到达一个不是_rom。”这显然不是你的意思。从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方法不太精确。

0

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'); 
0

或者改为@ lonesomeday的解决方案,如果你的最后一个过去的长度是可变的:

$pos = strrpos($row, '_'); 
echo $substr($row, 0, $pos); 
0

您应该使用str_replace代替rtrim,像这样:

echo $row.'<br/>'; 
echo str_replace('room', '', $row) .'<br/>'; 
echo str_replace('_room', '', $row) .'<br/>';