Ртрим с подчеркиванием в php - PullRequest
0 голосов
/ 13 сентября 2011

У меня есть строка «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 ]

6 голосов
/ 13 сентября 2011
echo rtrim($row, '_room') .'<br/>'; 

Это говорит: «удаляйте символы из конца строки, пока не получите тот, который не является _, r, o или m». Что, очевидно, не то, что вы имеете в виду. С руководство по PHP :

$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 голосов
/ 13 сентября 2011

Вы должны использовать str_replace вместо rtrim, например:

echo $row.'<br/>';
echo str_replace('room', '', $row) .'<br/>'; 
echo str_replace('_room', '', $row) .'<br/>'; 
0 голосов
/ 13 сентября 2011

В качестве альтернативы решению @ lonesomeday, если ваше последнее прошлое имеет переменную длину:

$pos = strrpos($row, '_');
echo $substr($row, 0, $pos);
0 голосов
/ 13 сентября 2011
Второй аргумент

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