Bir PHP dizesinin son 7 karakterini nasıl alabilirim?


278

Aşağıdaki dizenin son 7 karakterini yakalamayı nasıl başarabilirim?

Örneğin:

$dynamicstring = "2490slkj409slk5409els";
$newstring = some_function($dynamicstring);
echo "The new string is: " . $newstring;

Hangisi görüntülenir:

The new string is: 5409els


8
Bir dup olarak tanımlanan soru gerçekten hiç bu soruya aynı değildir.
Asaph

13
Google'da bu konuyu ararken buraya gelmem ironiktir.
çekiyor

5
@ Asaph buna yığın etkisi diyorum. İnsanlar soruları kapatmak için her şeyi
deniyorlar

5
Sorunu google'a dönüştürmek ve yanıtta SO'da bir kod satırı bulmak kılavuzdan geçmekten çok daha kolay ve hızlı.
Engin Yapici

Yanıtlar:


597

substr()2. argüman için negatif bir sayıyla kullanın .

$newstring = substr($dynamicstring, -7);

Gönderen php docs :

string substr ( string $string , int $start [, int $length ] )

Start negatifse, döndürülen dize, dizenin sonundaki start'th karakterinde başlar.


Ancak $ dynamicstring 7 karakterden azsa, $ newstring boş olur. (en azından PHP 5.2.6'da)
Scott Chu

Karakter sayısının 7'den büyük veya ona eşit olup olmadığını görmek için her zaman önce strlen ile kontrol yapabilirsiniz.
PBwebD


14

Çok baytlı karakter kodlarıyla çalışmak için daha güvenli sonuçlar, her zaman substr yerine mb_substr kullanılır. Utf-8 örneği:

$str = 'Ne zaman seni düşünsem';
echo substr( $str, -7 ) . ' <strong>is not equal to</strong> ' .
  mb_substr( $str, -7, null, 'UTF-8') ;

11

Dizeyi almadan önce bir kontrol yapmak daha iyi olur.

$newstring = substr($dynamicstring, -7);

karakterler 7'den büyükse son 7 karakteri döndürürseniz sağlanan dizeyi döndürür.

veya uzunluk 7'den küçükse mesaj veya hata döndürmeniz gerekiyorsa bunu yapın

$newstring = (strlen($dynamicstring)>7)?substr($dynamicstring, -7):"message";

substr belgeleri


Sanırım diğer bölüm bir mesaj vermek için gerekli. Girilen geçersiz veri gibi bir şey veya ..
Neri

1
Bu muhtemelen en iyi cevaptır, daha iyi hale getirebilecek tek şey php kılavuzuna bir referanstır.
Mark Carpenter Jr

2

Basit olması için, mesaj göndermek istemiyorsanız bunu deneyin

$new_string = substr( $dynamicstring, -min( strlen( $dynamicstring ), 7 ) );

0

son 7 karakter için

$newstring = substr($dynamicstring, -7);

newstring $: 5409els

ilk 7 karakter için

$newstring = substr($dynamicstring, 0, 7);

newstring $: 2490slk


-1

bir dizenin son 7 karakteri:

$ rest = substr ("abcdefghijklmnop", -7); // "jklmnop" döndürür

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.