stringfungsiteksMenengah3 mnt baca

Manipulasi String Lanjutan

Potong, ganti, dan ekstrak bagian string dengan substr, str_replace, dan regex ringan.

Kenapa Perlu Lebih dari Dasar?

Fungsi string dasar merapikan dan memeriksa. Tapi tugas nyata sering butuh operasi: ganti semua kata tertentu, ambil bagian tengah string, buat cuplikan artikel 100 karakter tanpa memotong kata. Tiga fungsi ini adalah peralatan operasinya.

php
<?php
// Contoh 1: str_replace dan substr dalam aksi
$template = "Halo {nama}, pesananmu {kode} sudah dikirim.";
$pesan = str_replace(["{nama}", "{kode}"], ["Sinta", "TRX-001"], $template);
echo $pesan;   // "Halo Sinta, pesananmu TRX-001 sudah dikirim."

$artikel = "PHP adalah bahasa pemrograman server yang sangat populer di dunia.";
$cuplikan = substr($artikel, 0, 30);   // "PHP adalah bahasa pemrograman"
echo $cuplikan . "...";

str_replace menerima array untuk cari-dan-ganti banyak sekaligus: pola standar membuat template pesan/notifikasi. substr($s, 0, 30) mengambil 30 karakter pertama untuk cuplikan.

php
<?php
// Contoh 2: cuplikan cerdas + ekstrak dengan regex
function cuplikan(string $teks, int $batas = 50): string {
    if (strlen($teks) <= $batas) return $teks;
    $potong = substr($teks, 0, $batas);
    // kembalikan ke spasi terakhir agar tidak memotong kata
    return substr($potong, 0, strrpos($potong, " ")) . "...";
}
echo cuplikan("Belajar PHP itu menyenangkan sekali", 20);
// "Belajar PHP itu..."

// Ekstrak semua angka dari teks
preg_match_all("/\d+/", "Kode TRX-2026-001 seharga Rp15000", $cocok);
print_r($cocok[0]);   // ["2026", "001", "15000"]

// Sensor kata kasar
$bersih = preg_replace("/\b(jelek|bodoh)\b/i", "***", "Kamu jelek dan bodoh!");
echo $bersih;   // "Kamu *** dan ***!"

strrpos mencari posisi terakhir kemunculan (kebalikan strpos), trik standar cuplikan tanpa potong kata. preg_match_all mengekstrak semua pola, preg_replace mengganti dengan pola regex (/i = abaikan kapital).

Jebakan yang Sering Terjadi

str_replace case-sensitive. str_replace("php", "PHP", "belajar php") berhasil, tapi "belajar PHP" (sudah kapital) tidak tersentuh. Untuk ganti tanpa peduli kapital, pakai str_ireplace().

substr memotong multibyte. substr("Sinta😊", 0, 6) bisa memotong emoji di tengah byte dan menghasilkan karakter rusak. Untuk teks ber-emoji/aksen, pakai mb_substr() dari ekstensi mbstring.

Slug: URL yang Ramah

Salah satu manipulasi string paling berguna di web: membuat slug dari judul artikel.

php
<?php
function slug(string $judul): string {
    $slug = strtolower($judul);                          // kecil semua
    $slug = preg_replace('/[^a-z0-9\s-]/', '', $slug);   // buang simbol
    $slug = preg_replace('/[\s-]+/', '-', $slug);        // spasi jadi strip
    return trim($slug, '-');                             // rapikan ujung
}

echo slug("Belajar PHP itu Menyenangkan!");  // belajar-php-itu-menyenangkan
echo slug("Kopi Susu  ---  Gula Aren");       // kopi-susu-gula-aren

Fungsi 5 baris ini dipakai WordPress dan semua CMS: judul "Promo 50% Merdeka!!" menjadi URL bersih /promo-50-merdeka. Simpan slug di database dan pakai untuk URL artikel alih-alih ID angka.

Catatan teknis: Untuk parsing serius (HTML, CSV, JSON), jangan pakai regex: pakai parser khusus (DOMDocument, str_getcsv, json_decode). Regex untuk pola sederhana; parser untuk struktur.

Tantangan

Sensor otomatis komentar

Buat fungsi sensor(string $teks): string yang mengganti kata "bodoh" dan "jelek" (abaikan kapital) menjadi "***" memakai preg_replace. Uji dengan kalimat "Dasar BODOH, jelek sekali!".

Kuis Bab

Uji pemahamanmu: Bab 4: Fungsi, Array & String

Jawab 5 soal berikut, lalu tekan "Periksa Jawaban".

1.Kenapa variabel luar tidak bisa dipakai langsung di dalam fungsi?

2.Apa fungsi dari ... (variadic) pada parameter?

3.Fungsi sort apa yang menjaga key pada associative array?

4.Kenapa cek hasil strpos harus memakai !== false?

5.Apa beda explode dan implode?