Я должен знать, как я могу заменить последний "s" от строки с""
Скажем, у меня есть строка как тестеры, и вывод должен быть тестером. Это должно просто заменить последний "s" и не каждый "s" в строке, как я могу сделать это в PHP?
if (substr($str, -1) == 's')
{
$str = substr($str, 0, -1);
}
Обновление: Хорошо, это также возможно без регулярных выражений, используя 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
$result = rtrim($str, 's');
$result = str_pad($result, strlen($str) - 1, 's');
См. rtrim()
Ваш вопрос несколько неясен, хотите ли вы удалить 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"
Если вы хотите сделать инъекцию, например, определить единственное/ множественное число слов, то посмотрите на этот простой класс инфлекторов, чтобы знать, какой путь выбрать.