Как заменить последние "s" на "" в PHP - PullRequest
10 голосов
/ 29 марта 2010

Мне нужно знать, как я могу заменить последние "s" из строки на ""

Допустим, у меня есть строка типа testers , и результат должен быть tester . Он должен просто заменить последние "s", а не все "s" в строке как я могу сделать это в PHP?

Ответы [ 5 ]

21 голосов
/ 29 марта 2010
if (substr($str, -1) == 's')
{
    $str = substr($str, 0, -1);
}
15 голосов
/ 29 марта 2010

Обновление: Ок, также возможно без регулярных выражений, используя strrpos и substr_replace:

$str = "A sentence with 'Testers' in it";
echo substr_replace($str,'', strrpos($str, 's'), 1);
// Ouputs: A sentence with 'Tester' in it

strrpos возвращает индекс последнего вхождения строки, а substr_replace заменяет строку, начинающуюся с определенной позиции.

(Что совпадает с Гордоном , предложенным, как я только что заметил.)


Все ответы до сих пор удаляют последний символ слова. Однако если вы действительно хотите заменить последнее вхождение символа, вы можете использовать preg_replace с отрицательным прогнозом :

$s = "A sentence with 'Testers' in it";
echo preg_replace("%s(?!.*s.*)%", "", $string );

// Ouputs: A sentence with 'Tester' in it
5 голосов
/ 29 марта 2010
$result = rtrim($str, 's');
$result = str_pad($result, strlen($str) - 1, 's');

См. rtrim ()

5 голосов
/ 29 марта 2010

Ваш вопрос несколько неясен, хотите ли вы удалить s из конца строки или последнего вхождения s в строку. Это разница Если вы хотите первое, используйте решение, предлагаемое zerkms.

Эта функция удаляет последнее вхождение из $char из $string независимо от его положения в строке или возвращает всю строку, если $ char не встречается в строке.

function removeLastOccurenceOfChar($char, $string)
{
    if( ($pos = strrpos($string, $char)) !== FALSE) {
        return substr_replace($string, '', $pos, 1);
    }
    return $string;
}
echo removeLastOccurenceOfChar('s', "the world's greatest");
// gives "the world's greatet"

Если ваше намерение состоит в том, чтобы ввести, например, в единственном / множественном числе слова, то взгляните на этот простой класс инфлектора , чтобы узнать, какой путь выбрать.

2 голосов
/ 29 марта 2010
$str = preg_replace("/s$/i","",rtrim($str));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...