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. iç
— ç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.