PHP - Mengambil Substring Setelah Karakter Tertentu

Untuk mendapatkan apapun setelah karakter tertentu, di PHP ada beberapa cara. Masing-masing memiliki ciri tertentu. Langsung saja kita coba bereksperimen.

Diketahui:

  1. $str = 'Nama: Wahidin S.'; 

Ditanya:

Ambil apapun setelah tanda : (titik dua).

Dijawab:

1. explode()

Umumnya orang akan menggunakan explode(), karena memang fungsi ini sangat populer.

  1. $arr = explode(':', $str, 2); 
  2. echo $arr[1];  // " Wahidin S." 

Menurut saya kode diatas kurang semantik. Namun, faktanya banyak digunakan oleh programmer "pro" sekalipun.

Jika menggunakan cara diatas, pastikan tanda : di $str selalu ada atau ditemukan. Jika tidak, akan menimbulkan notice: Undefined offset: 1 in...

Untuk menghindari notice, bisa menggunakan isset, atau end() lebih praktis. Tidak perlu menggunakan index.

  1. echo end($arr);  // " Wahidin S." 

Jika tanda : tidak ditemukan, hasilnya: "Nama: Wahidin S.". Mengikuti sifat explode().

2. strpos() dan substr()

Perhatikan kode berikut ini:

  1. $start = strpos($str, ':'); 
  2. echo substr($str, $start + 1); // " Wahidin S." 

Kode diatas lebih semantik. Secara logika: Dapatkan posisi karakter : menggunakan strpos(), lalu ambil substring setelah posisi karakter :.

Jika tanda : tidak ditemukan atau $start adalah FALSE, tidak akan menimbulkan notice, hanya saja akan tampil substring dimulai dari index 1, karena kita menggunakan angka hardcoded 1 disitu. Hasilnya: "ama: Wahidin S.".

Jika kita ubah seperti ini:

  1. echo substr($str, $start + is_int($start)); 

Jika tanda : tidak ditemukan atau $start adalah FALSE, hasilnya: "Nama: Wahidin S.".

3. strstr()

Perhatikan kode berikut ini:

  1. echo strstr($str, ':'); // ": Wahidin S." 

Kode diatas adalah sama dengan menggunakan strpos() dan substr() sekaligus, dengan perbedaan jika tanda : tidak ditemukan akan menghasilkan string kosong.

  1. $start = strpos($str, ':'); 
  2. echo substr($str, $start); // ": Wahidin S." 

Kita bisa menggunakan cara ini jika karakter : ingin diikutsertakan.

#PHP #string

Baca juga: PHP - Mengambil Substring Sebelum Karakter Tertentu