"Ben" ile bir dizeden son "s" yerine bilmek gerekir
Let's say I have a string like testers and the output should be tester. It should just replace the last "s" and not every "s" in a string how can I do that in PHP?
Update: Tamam bu kullanarak düzenli ifadeler olmadan da mümkündür strrpos
ans substr_replace
a>:
$str = "A sentence with 'Testers' in it";
echo substr_replace($str,'', strrpos($str, 's'), 1);
// Ouputs: A sentence with 'Tester' in it
strrpos
, bir dizenin son oluşumu dizini döndürür ve substr_replace
, belirli bir pozisyondan başlayarak dize değiştirir.
(Hangi Gordon a> Ben sadece fark olarak önerilen aynıdır.)
Tüm cevaplar kadar bir sözcüğün son karakteri kaldırın. Eğer gerçekten last occurrence bir karakter değiştirmek istiyorsanız Ancak, kullanabilirsiniz preg_replace
with a negative lookahead a>:
$s = "A sentence with 'Testers' in it";
echo preg_replace("%s(?!.*s.*)%", "", $string );
// Ouputs: A sentence with 'Tester' in it
Sizin soru dize dize veya s
son oluşum ucundan s
kaldırmak isteyip biraz belirsizdir. Bu bir fark var. Eğer ilk istiyorsan, zerkms tarafından sunulan çözüm kullanın.
Bu fonksiyon $ Char dizesi oluşmaz zaman ne olursa olsun o, dizesinde pozisyon ya da tüm dizeyi döndürür, the last occurence $char
$string
ila kaldırır.
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"
Niyetinizi sonra have a look at this simple inflector class almak için hangi yolu bilmek, kelimeleri çoğul / örneğin tekilleştirmek, eğmek için ise.
$result = rtrim($str, 's');
$result = str_pad($result, strlen($str) - 1, 's');
Bkz rtrim()