rtrim与php中的下划线

时间:2011-09-13 11:14:14

标签: php trim

我排队'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。请帮帮我。

4 个答案:

答案 0 :(得分: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方法精确。

答案 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/>';