String & Fungsi Bawaan
Fungsi string modern PHP 8 (str_contains, str_starts_with), sprintf, number_format, multibyte (mb_*), regex dasar, dan fungsi matematika.
Fungsi string sehari-hari
| Fungsi | Contoh → hasil |
|---|---|
strlen | strlen('halo') → 4 (hitung byte) |
strtoupper / strtolower / ucfirst / ucwords | ubah huruf besar/kecil |
trim / ltrim / rtrim | buang spasi di tepi |
str_replace('a','b',$s) | ganti semua kemunculan |
substr($s, 0, 3) | ambil potongan |
strpos($s, 'x') | posisi pertama (atau false) |
explode(',', $s) / implode(', ', $arr) | pecah / gabung |
str_pad, str_repeat, wordwrap | padding, ulang, bungkus baris |
Tiga fungsi baru PHP 8.0 — akhirnya!
str_contains('Belajar PHP', 'PHP'); // true
str_starts_with('https://x.com', 'https'); // true
str_ends_with('laporan.pdf', '.pdf'); // true
Sebelum PHP 8, kita harus menulis strpos(...) !== false yang rawan salah. Ketiga fungsi baru ini membaca seperti kalimat dan mengembalikan bool langsung.
Format teks: sprintf & number_format
sprintf('%s membeli %d barang, total Rp %s', 'Budi', 3, number_format(1500000, 0, ',', '.'));
// Budi membeli 3 barang, total Rp 1.500.000
sprintf('%05.1f', 3.14159); // 003.1
sprintf('%-10s|', 'kiri'); // rata kiri
Penentu format: %s string, %d bulat, %f desimal, %05d padding nol. number_format($angka, desimal, pemisahDesimal, pemisahRibuan) untuk format rupiah.
Teks multibyte (Unicode)
strlen('café') → 5 karena huruf é memakai 2 byte. Untuk teks yang bisa berisi huruf non-ASCII (nama, emoji, aksara), pakai keluarga mb_: mb_strlen, mb_substr, mb_strtoupper, mb_str_split. Pastikan ekstensi mbstring aktif.
Regex dasar (PCRE)
preg_match('/^\d{4}-\d{2}-\d{2}$/', '2026-10-16'); // 1 (cocok)
preg_replace('/\s+/', ' ', "banyak spasi"); // "banyak spasi"
preg_match_all('/#(\w+)/', 'belajar #php #laravel', $m); // $m[1] = ['php','laravel']
filter_var('a@b.com', FILTER_VALIDATE_EMAIL); // string atau false
Untuk validasi umum (email, URL, IP), utamakan filter_var() daripada menulis regex sendiri.
Fungsi matematika
round(3.456, 2) → 3.46 · floor · ceil · abs · max/min · intdiv · random_int(1, 6) (aman untuk keamanan; jangan pakai rand() untuk token). Hati-hati: bilangan desimal biner tidak presisi — 0.1 + 0.2 !== 0.3. Untuk uang, simpan dalam satuan terkecil (int rupiah/sen) atau pakai ekstensi BCMath.
Keamanan string
Jangan pernah menyisipkan input pengguna mentah ke HTML, SQL, atau perintah shell. Escape sesuai tujuan: htmlspecialchars() untuk HTML, prepared statement untuk SQL (bab PDO), escapeshellarg() untuk shell.