Как заменить Последний “s” “” в PHP

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

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

10
задан Anthony Forloney 28 March 2010 в 21:18
поделиться

5 ответов

if (substr($str, -1) == 's')
{
    $str = substr($str, 0, -1);
}
20
ответ дан 3 December 2019 в 13:27
поделиться
$str = preg_replace("/s$/i","",rtrim($str));
2
ответ дан 3 December 2019 в 13:27
поделиться

Обновление: Хорошо, это также возможно без регулярных выражений, используя 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
16
ответ дан 3 December 2019 в 13:27
поделиться
$result = rtrim($str, 's');
$result = str_pad($result, strlen($str) - 1, 's');

См. rtrim()

5
ответ дан 3 December 2019 в 13:27
поделиться

Ваш вопрос несколько неясен, хотите ли вы удалить 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"

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

5
ответ дан 3 December 2019 в 13:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: