String adalah teks: nama menu, isi nota, pesan error, bahkan seluruh halaman HTML yang dikirim PHP. Bayangin nota di Warung Bu Tini. Kalimatnya selalu sama, "Pesanan: ... porsi ..., total Rp...", cuma angka dan nama menunya yang diisi tiap pesanan. Di PHP, kamu menyusun nota seperti itu dari potongan teks dan variabel, lalu mengubahnya dengan fungsi bawaan: menghitung panjangnya, mengganti katanya, atau membuatnya huruf besar.
🧪 Tebakan cepat:
$menu = "Pecel Lélé"; echo strlen($menu);menulis10atau12? Tebak dulu, jawabannya ada di bagian "strlen menghitung byte".
Kutip ganda dan kutip tunggal
<?php
$menu = "Mie Ayam";
$jumlah = 3;
echo "Pesan $jumlah porsi $menu\n";
echo 'Pesan $jumlah porsi $menu\n';
Pesan 3 porsi Mie Ayam
Pesan $jumlah porsi $menu\n
- Di kutip ganda,
$jumlahdan$menudiganti nilainya (interpolasi), dan\njadi baris baru. - Di kutip tunggal, semuanya ditulis apa adanya:
$menutetap tulisan$menu,\ntetap dua karakter. Jadiecho 'Halo $nama';menulisHalo $nama, bukan nama orangnya. - Kalau sesudah variabel langsung ada huruf, pakai kurung kurawal:
"{$jumlah}x"menulis3x. Tanpa kurung,"$jumlahx"dibaca sebagai variabel$jumlahxdan PHP memberiWarning: Undefined variable $jumlahx.
Menyambung dengan titik
<?php
$menu = "Mie Ayam";
$total = 36000;
$nota = "Pesanan: " . $menu . ", total Rp" . $total;
$nota .= " (lunas)";
echo $nota;
Pesanan: Mie Ayam, total Rp36000 (lunas)
.(titik) menyambung dua string jadi satu. Angka ikut diubah jadi teks..=menambahkan teks di belakang isi variabel yang sudah ada.- Jangan pakai
+seperti di JavaScript:"Total: " + 36000berhenti denganUncaught TypeError: Unsupported operand types: string + int.
Heredoc untuk teks beberapa baris
<?php
$menu = "Mie Ayam";
$jumlah = 3;
$total = 36000;
$nota = <<<NOTA
Pesanan: $jumlah porsi $menu
Total: Rp$total
NOTA;
echo $nota;
Pesanan: 3 porsi Mie Ayam
Total: Rp36000
<<<NOTAmembuka teks beberapa baris, danNOTA;di barisnya sendiri menutupnya. Namanya bebas, asal pembuka dan penutupnya sama.- Heredoc bekerja seperti kutip ganda: variabelnya diganti nilainya.
- Versi kutip tunggalnya disebut nowdoc, ditulis
<<<'NOTA': isinya gak diubah sama sekali.
Fungsi string yang sering dipakai
<?php
$kalimat = "Saya Sedang Belajar PHP";
echo strlen($kalimat) . "\n";
echo strtolower($kalimat) . "\n";
echo strtoupper($kalimat) . "\n";
echo str_replace("PHP", "Laravel", $kalimat) . "\n";
echo substr($kalimat, 5, 6) . "\n";
var_dump(str_contains($kalimat, "PHP"));
23
saya sedang belajar php
SAYA SEDANG BELAJAR PHP
Saya Sedang Belajar Laravel
Sedang
bool(true)
strlen($kalimat)menghitung panjangnya. Spasi ikut dihitung: 4 + 1 + 6 + 1 + 7 + 1 + 3 = 23. Begitu jugastrlen("Belajar")menghasilkan7.strtolowermembuat semua huruf kecil,strtouppersemua huruf besar.str_replace(cari, ganti, teks)mengembalikan string baru dengan kata yang diganti.$kalimatsendiri gak berubah, jadi hasilnya harus di-echo atau disimpan.substr(teks, mulai, panjang)memotong teks. Posisi dihitung dari 0, jadi posisi 5 adalah huruf S di "Sedang".str_contains(PHP 8) menjawabtrueataufalse: ada kata itu atau gak.trimmembuang spasi di awal dan akhir.
strlen menghitung byte
<?php
$menu = "Pecel Lélé";
echo strlen($menu) . "\n";
echo mb_strlen($menu) . "\n";
echo strtoupper($menu) . "\n";
echo mb_strtoupper($menu) . "\n";
12
10
PECEL LéLé
PECEL LÉLÉ
- PHP menyimpan string sebagai deretan byte UTF-8. Huruf biasa 1 byte, huruf beraksen seperti é 2 byte.
strlenmenghitung byte, jadi "Pecel Lélé" yang punya 10 huruf dihitung 12. Itu jawaban tebakannya.- Fungsi berawalan
mb_(multibyte) menghitung dan mengubah per huruf:mb_strlenmenjawab 10,mb_strtoupperikut membesarkan é. - Untuk teks tanpa aksen, seperti "Saya Sedang Belajar PHP",
strlendanmb_strlensama.
⚠️ Jebakan yang sering ketemu
- Menyambung dengan
+. Di PHP,+cuma untuk angka. Sambung teks dengan titik. - Variabel di kutip tunggal.
'Halo $nama'menulisHalo $nama. Kalimat yang memakai variabel ditulis dengan kutip ganda. - Mengira
str_replacemengubah variabelnya. Dia mengembalikan string baru. Tulisecho str_replace(...)atau simpan ke variabel. - Huruf besar-kecil.
str_replace("php", "Laravel", $kalimat)gak mengganti apa pun, karena di kalimatnya tertulisPHP.str_ireplacemengabaikan huruf besar-kecil.
TL;DR: Kutip ganda mengganti $variabel dengan nilainya dan mengenal \n, kutip tunggal menulis apa adanya ('Halo $nama' tetap Halo $nama). Teks disambung dengan titik (., .=), bukan +, dan teks beberapa baris paling rapi ditulis sebagai heredoc <<<NOTA ... NOTA;. strlen menghitung panjang termasuk spasi ("Saya Sedang Belajar PHP" = 23, "Belajar" = 7), strtolower/strtoupper mengubah huruf, dan str_replace(cari, ganti, teks) mengembalikan string baru. strlen menghitung byte, jadi untuk teks beraksen seperti "Pecel Lélé" pakai mb_strlen dan fungsi mb_ lainnya.