Herkes bir dizenin son geçtiği yeri bir dizede başka bir dizeyle değiştirmenin çok hızlı bir yolunu biliyor mu?PHP String'de bir dizenin son geçtiği yeri değiştirin mi?
Bu işlevi kullanabilirsinizcevap
:
function str_lreplace($search, $replace, $subject)
{
$pos = strrpos($subject, $search);
if($pos !== false)
{
$subject = substr_replace($subject, $replace, $pos, strlen($search));
}
return $subject;
}
Güvenliğin iyiliği için, 'strrpos'un false döndürmediğini, aksi halde tamam olmadığını kontrol ederim. – Wrikken
Evet, haklısın. Cevabımı güncelleyeceğim. – Mischa
Bu hala ne olursa olsun doğru geri dönüyordu.Olmayı değiştirmeyi düşünün: if ($ pos) { $ subject = substr_replace ($ konu, $ yerine, $ pos, strlen ($ search)); \t $ konu döndürün; } else { \t false; } – Jazzy
Bu aynı zamanda çalışacaktır:
function str_lreplace($search, $replace, $subject)
{
return preg_replace('~(.*)' . preg_quote($search, '~') . '(.*?)~', '$1' . $replace . '$2', $subject, 1);
}
UPDATE Biraz daha özlü sürümü (http://ideone.com/B8i4o):
function str_lreplace($search, $replace, $subject)
{
return preg_replace('~(.*)' . preg_quote($search, '~') . '~', '$1' . $replace, $subject, 1);
}
Yanlış mı yapıyorum? Eğer öyleyse sadece beni görmezden gelmeyin :) ||| echo str_lreplace ("x", "y", "bu x veya o x"); => Çıktı: "y" Bakınız: http://www.ideone.com/UXuTo – edorian
@edorian: Oops! Üzgünüz, bunu acele ettim, doğru sürüm burada: http://ideone.com/vR073. –
$string = 'this is my world, not my world';
$find = 'world';
$replace = 'farm';
$result = preg_replace(strrev("/$find/"),strrev($replace),strrev($string),1);
echo strrev($result); //output: this is my world, not my farm
Başka 1-liner ama Süleyman Demirel olmadan:
$subject = 'bourbon, scotch, beer';
$search = ',';
$replace = ', and';
echo strrev(implode(strrev($replace), explode(strrev($search), strrev($subject), 2))); //output: bourbon, scotch, and beer
Birinin bunu –
FWIW standardına göre karşılaştırmasını görmek eğlencelidir, kabul edilen çözüm bu çözümden yaklaşık% 35 daha hızlıdır. – JustCarty
$string = 'The quick brown fox jumps over the lazy fox';
echo preg_replace('/fox$/', 'dog', $string);
//output
'The quick brown fox jumps over the lazy dog'
aşağıdaki ziyade kompakt çözüm eşleştirmek için PCRE positive lookahead assertion kullanan dizenin sonunu eşleştirmek için bir reg ifadeye "$" kullanın İlgilenilen alt-dizinin son meydana gelmesi, yani, aynı alt-tabakanın başka oluşumları tarafından takip edilmeyen alt-tabaka oluşumu. Böylece örnek, last 'fox'
'un 'dog'
ile değiştirilmesini sağlar.
$string = 'The quick brown fox, fox, fox jumps over the lazy fox!!!';
echo preg_replace('/(fox(?=.*fox.*))/', 'dog', $string);
ÇIKIŞ:
The quick brown fox, fox, fox jumps over the lazy dog!!!
işe yaramıyor görünüyor – Ivan
Fikir iyi, ama kod değil. Olması gereken: '$ string = 'Hızlı kahverengi tilki, tilki, tilki tembel tilki üzerinde atlar!'; echo preg_replace ('/ (tilki (?!. * Tilki)) /', 'köpek', $ dize); ' – Roemer
Gerçekten de, gönderdiğim kod sonuncusu hariç tüm" tilki "örneklerini değiştirir. "köpek", ama istediğimiz tam tersi. Bunun yerine geçtiğini belirttiğin için teşekkür ederim? = Ile?! sorunu giderir. –
Sadece bir kod satırı (geç cevap ama bunu eklemek değer):
$string = 'The quick brown fox jumps over the lazy dog';
$find_me = 'dog';
preg_replace('/'. $find_me .'$/', '', $string);
biten $ dize sonunu gösterir.
Bunu yapabilirsiniz:
$str = 'Hello world';
$str = rtrim($str, 'world') . 'John';
Sonucu 'Merhaba John' olduğu;
Selamlar
Bu, tekrarlanan karakterler olmadıkça çalışır. Benim durumumda, arşiv tarihini sayfa numarasından çıkartıyorum, böylece "2015-12/2" ye sahibim ve tüm/ve hepsini 2 tamamladıktan sonra "2015-1" oluyor. – Mike
Sen() son eşleşmeyi bulmak için strrpos kullanabilirsiniz.
$string = "picture_0007_value";
$findChar =strrpos($string,"_");
$string[$findChar]=".";
echo $string;
Çıktı: picture_0007.value kodunda hatalarından dışında
$string = "picture_0007_value";
$findChar =strrpos($string,"_");
if($findChar !== FALSE) {
$string[$findChar]=".";
}
echo $string;
Faruk Ünal iyi anwser sahiptir. Bir işlev hile yapar.
** $ findChar ** öğesi yanlış değilse (kabul edilen yanıtta olduğu gibi) kontrol etmeniz gerekir. Dize, aranan dize içermiyorsa, bildirim alırsınız ve ilk karakter değiştirilir. – shaggy
- 1. VBA Bir dizginin son geçtiği yeri bul
- 2. Vim - Satırdaki karakterin son geçtiği yeri sil
- 3. Karakterin son geçtiği yeri dize ile değiştir
- 4. Python'da karakterin son geçtiği yeri bul Python
- 5. javascript dizesinin son geçtiği yeri değiştir
- 6. javascript'te bir kelimenin son geçtiği yeri nasıl değiştirilir? örneğin
- 7. Bulunduğunuz yeri yanlış yere değiştirin
- 8. Bir dizeden bir dizi karakterin son geçtiği yer nasıl bulunur?
- 9. raylar üzerinde yakut, bir * işareti varsa son karakteri değiştirin *
- 10. Bir dizenin ilk 10 karakterini mi alıyorsunuz?
- 11. Bir dizenin tüm oluşumlarını pandalar veri çerçevesine (Python) değiştirin
- 12. Belirli bir karakterden önce bir dizenin son bölümünü nasıl alabilirim?
- 13. PHP son etiketini atla
- 14. Son virgülü bir dizgede "ve"
- 15. Dizinin son karakterini JavaScript'i kullanarak değiştirin
- 16. Piksel (PHP) cinsinden bir dizenin genişliğini ve yüksekliğini elde edin
- 17. target-c Bir dizenin son 2 karakterini aldınız mı?
- 18. C# içindeki bir dizenin ilk ve son karakteri nasıl kaldırılır?
- 19. Preg_replace ile sadece bir dizenin son eşleşmesi nasıl değiştirilir?
- 20. Bir dizenin
- 21. PHP Bir dizenin matematiksel bir ifade olduğunu doğrulayın
- 22. php içinde sabun öneklerini değiştirin
- 23. Son karakteristikler hariç, tüm karakterleri # ile değiştirin
- 24. Scala nesnesinin sınıfının nasıl geçtiği
- 25. PHP: Bir dizenin özel karakterler içerip içermediğini nasıl anlarsınız?
- 26. php son karakterin bir '/' olup olmadığını kontrol etmiyorsa o zaman
- 27. Scala vaka nesnesine bir dizenin ayrışması için yerleşik mi?
- 28. ek yeri
- 29. Resimlerimin Yeri
- 30. eclipse.ini dosyasının yeri nerede?
['s ($ str) -> replaceLast ($ arama, $ yerine)'] (https://github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str. php # L305) yardımcı olarak, [bu bağımsız kütüphane] 'de (https://github.com/delight-im/PHP-Str). – caw