Cara Menghitung Jumlah Karakter String di PHP

Menghitung panjang teks terdengar sepele, tetapi dipakai di mana-mana: membatasi panjang kata sandi, memotong kutipan artikel, hingga memvalidasi nomor KTP yang harus 16 digit. Artikel ini membahas cara menghitung panjang string di PHP dengan benar, termasuk jebakan pada huruf beraksen dan emoji.

Fungsi strlen()

<?php
$teks = "Halo Dunia";
echo strlen($teks); // 10
?>

Contoh Kasus: Validasi Panjang Kata Sandi

<?php
$password = $_POST["password"];
if (strlen($password) < 8) {
    echo "Kata sandi minimal 8 karakter";
} else {
    echo "Panjang kata sandi aman";
}
?>

Contoh Kasus: Memotong Ringkasan Artikel

<?php
$isi = "Ini adalah paragraf pembuka yang cukup panjang untuk sebuah artikel.";
if (strlen($isi) > 40) {
    echo substr($isi, 0, 40) . "...";
}
// "Ini adalah paragraf pembuka yang cukup ..."
?>

Jebakan: Huruf Beraksen dan Emoji

strlen() menghitung byte, bukan huruf. Pada teks dengan karakter khusus (é, ñ, emoji) hasilnya bisa lebih besar dari jumlah huruf sebenarnya karena satu huruf UTF-8 bisa memakan beberapa byte. Untuk menghitung jumlah huruf yang sebenarnya, gunakan mb_strlen():

<?php
$teks = "café";
echo strlen($teks);    // 5 (byte)
echo mb_strlen($teks); // 4 (huruf sebenarnya)
?>

Kesalahan Umum

  • Memakai strlen() untuk membatasi jumlah huruf pada teks berbahasa yang mengandung aksen — gunakan mb_strlen().
  • Lupa bahwa spasi juga dihitung sebagai satu karakter.

Kesimpulan

Gunakan strlen() untuk teks ASCII biasa, dan mb_strlen() saat teks mungkin mengandung huruf beraksen atau emoji. Memilih fungsi yang tepat mencegah bug halus pada validasi panjang input.

Referensi: untuk penjelasan lebih mendalam, kunjungi dokumentasi resmi PHP (php.net).

Baca Juga

Ali Akbar

Software Developer yang fokus mengembangkan aplikasi berbasis Web dan Desktop. Senang mempelajari teknologi baru terutama di bidang web design dan web development.

View all posts by Ali Akbar →

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *