Saya perlu mendapatkan karakter terakhir dari sebuah string. Katakanlah saya memiliki "penguji" sebagai string input dan saya ingin hasilnya menjadi "s". bagaimana saya bisa melakukannya di PHP?
Saya perlu mendapatkan karakter terakhir dari sebuah string. Katakanlah saya memiliki "penguji" sebagai string input dan saya ingin hasilnya menjadi "s". bagaimana saya bisa melakukannya di PHP?
Jawaban:
substr("testers", -1); // returns "s"
Atau, untuk string multibytes:
substr("multibyte string…", -1); // returns "…"
mb_substr
( php.net/mb_substr ) sebagai gantinya.
Atau dengan akses string langsung :
$string[strlen($string)-1];
Perhatikan bahwa ini tidak berfungsi untuk string multibyte. Jika Anda perlu bekerja dengan string multibyte, pertimbangkan untuk menggunakan mb_*
rangkaian fungsi string.
Pada PHP 7.1.0 indeks numerik negatif juga didukung, misalnya adil $string[-1];
Dari PHP 7.1 Anda dapat melakukan ini ( rfc yang diterima untuk offset string negatif ):
<?php
$silly = 'Mary had a little lamb';
echo $silly[-20];
echo $silly{-6};
echo $silly[-3];
echo $silly[-15];
echo $silly[-13];
echo $silly[-1];
echo $silly[-4];
echo $silly{-10};
echo $silly[-4];
echo $silly[-8];
echo $silly{3}; // <-- this will be deprecated in PHP 7.4
die();
Saya akan membiarkan Anda menebak hasilnya.
Juga, saya menambahkan ini ke kode kinerja xenonite dengan hasil ini:
substr () mengambil 7.0334868431091seconds
akses array mengambil 2.3111131191254seconds
Akses string langsung (offset string negatif) mengambil 1,7971360683441 detik
Saya tidak dapat meninggalkan komentar, tetapi sehubungan dengan jawaban FastTrack, juga ingat bahwa akhir baris mungkin hanya satu karakter. saya akan menyarankan
substr(trim($string), -1)
EDIT: Kode saya di bawah ini diedit oleh seseorang, membuatnya tidak melakukan apa yang saya sebutkan. Saya telah memulihkan kode asli saya dan mengubah kata-katanya agar lebih jelas.
trim
(atau rtrim
) akan menghapus semua spasi putih, jadi jika Anda perlu memeriksa spasi, tab, atau spasi putih lainnya, ganti secara manual berbagai ujung baris terlebih dahulu:
$order = array("\r\n", "\n", "\r");
$string = str_replace($order, '', $string);
$lastchar = substr($string, -1);
Pada PHP 7.1.0, offset string negatif juga didukung. Jadi, jika Anda mengikuti perkembangan zaman, Anda dapat mengakses karakter terakhir dalam string seperti ini:
$str[-1]
Atas permintaan @mickmackusa, saya melengkapi jawaban saya dengan cara aplikasi yang memungkinkan:
<?php
$str='abcdef';
var_dump($str[-2]); // => string(1) "e"
$str[-3]='.';
var_dump($str); // => string(6) "abc.ef"
var_dump(isset($str[-4])); // => bool(true)
var_dump(isset($str[-10])); // => bool(false)
Saya akan menyarankan untuk mencari solusi Gordon karena lebih berkinerja daripada substr ():
<?php
$string = 'abcdef';
$repetitions = 10000000;
echo "\n\n";
echo "----------------------------------\n";
echo $repetitions . " repetitions...\n";
echo "----------------------------------\n";
echo "\n\n";
$start = microtime(true);
for($i=0; $i<$repetitions; $i++)
$x = substr($string, -1);
echo "substr() took " . (microtime(true) - $start) . "seconds\n";
$start = microtime(true);
for($i=0; $i<$repetitions; $i++)
$x = $string[strlen($string)-1];
echo "array access took " . (microtime(true) - $start) . "seconds\n";
die();
menghasilkan sesuatu seperti
----------------------------------
10000000 repetitions...
----------------------------------
substr() took 2.0285921096802seconds
array access took 1.7474739551544seconds
Ingat, jika Anda memiliki string yang dibaca sebagai baris dari file teks menggunakan fgets()
fungsi, Anda harus menggunakan substr($string, -3, 1)
sehingga Anda mendapatkan karakter aktual dan bukan bagian dari CRLF (Carriage Return Line Feed).
Saya tidak berpikir orang yang mengajukan pertanyaan memerlukan ini, tetapi bagi saya, saya mengalami kesulitan mendapatkan karakter terakhir dari string dari file teks jadi saya yakin orang lain akan menemukan masalah yang sama.
Anda dapat menemukan karakter terakhir menggunakan banyak cara php seperti substr () dan mb_substr () .
Jika Anda menggunakan pengkodean karakter multibyte seperti UTF-8, gunakan mb_substr alih-alih substr
Di sini saya dapat menunjukkan kepada Anda berdua contoh:
<?php
echo substr("testers", -1);
echo mb_substr("testers", -1);
?>
String dalam berbagai bahasa termasuk C sharp dan PHP juga dianggap sebagai array karakter.
Mengetahui bahwa dalam operasi array teori harus lebih cepat daripada yang bisa Anda lakukan,
$foo = "bar";
$lastChar = strlen($foo) -1;
echo $foo[$lastChar];
$firstChar = 0;
echo $foo[$firstChar];
Namun, fungsi array standar suka
count();
tidak akan bekerja pada string.
Siemano, dapatkan hanya file php dari direktori yang dipilih:
$dir = '/home/zetdoa/ftp/domeny/MY_DOMAIN/projekty/project';
$files = scandir($dir, 1);
foreach($files as $file){
$n = substr($file, -3);
if($n == 'php'){
echo $file.'<br />';
}
}
s($str)->end()
bermanfaat, seperti yang ditemukan di perpustakaan mandiri ini .