NEW!! » Premium Support - PHP, MySQL, Dll Buku Query MySQL Lihat Detail » x

Memotong Teks dan Kalimat dengan PHP

Pada kondisi tertentu terkadang kita perlu untuk memotong teks yang terlalu panjang, misal untuk suatu artikel yang cukup panjang kita potong 50 karakter pertama untuk membuat previewnya. Berikut beberapa kemungkinan kondisi yang dihadapi dan alternatif pemecahannya.

1 Memotong kata/teks/kalimat apa adanya

Misal kita ingin memotong teks pada posisi tertentu dan ditambahkan tiga titik dibelakangnya. Contoh dibawah ini akan mengambil 50 huruf pertama dengan hasil apa adanya dan ditambahkan tiga titik dibelakangnya.

<?php
$num_char = 50;
$text = 'Contoh script yang digunakan untuk memotong 50 huruf pertama dari kalimat / paragraf dengan php';
echo substr($text, 0, $num_char) . '...';
?>

setelah dijalankan maka hasil yang diperoleh adalah Contoh script yang digunakan untuk memotong 50 hur…

2 Memotong teks, kalimat atau paragraf tanpa memotong kata (dengan menghilangkan kata yang terpotong)

Melanjukan contoh nomor 1, namun hasil teks atau kalimat yang kita potong menghasilkan kata yang utuh (tidak terpotong) dengan batas maksimal karakter sebanyak 50 karakter. Sehingga alur scriptnya akan seperti ini:

  1. Ambil 50 huruf pertama.
  2. Jika berupa spasi, maka potong pada posisi tersebut.
  3. Jika bukan spasi, maka cari huruf sebelumnya hingga menemukan spasi, potong pada posisi tersebut.

untuk memenuhi kriteria diatas beberapa cara dapat digunakan yaitu:

Script 1:

<?php
$cut_text = substr($text, 0, $num_char);
if ($text{$num_char - 1} != ' ') { // jika huruf ke 50 (50 - 1 karena index dimulai dari 0) buka  spasi
	$new_pos = strrpos($cut_text, ' '); // cari posisi spasi, pencarian dari huruf terakhir
	$cut_text = substr($text, 0, $new_pos);
}
echo $cut_text . '...';

Script 2:

<?php
$char     = $text{$num_char - 1};
while($char != ' ') {
	$char = $text{--$num_char}; // Cari spasi pada posisi 49, 48, 47, dst...
}
echo substr($text, 0, $num_char) . '...';

Kedua script diatas sama sama menghasilkan kalimat Contoh script yang digunakan untuk memotong 50… , script ke dua lebih simpel dan lebih mudah dibaca/difahami, dan setelah dites, ternyata script ke dua yang menggunakan string index ($text{--$num_char}) rata-rata waktu eksekusi 3x lebih cepat dibanding dengan script pertama.

3 Memotong teks, kalimat atau paragraf tanpa memotong kata (dengan menambahkan kata yang terpotong)

Melanjutkan contoh sebelumnya, kondisi ketiga ini kita akan memotong teks dengan kriteria:

  1. Ambil 50 huruf pertama.
  2. Jika berupa spasi, maka potong pada posisi tersebut.
  3. Jika bukan spasi, maka cari huruf setelahnya hingga menemukan spasi, potong pada posisi tersebut.

untuk memenuhi kriteria diatas beberapa cara dapat digunakan yaitu:

Script 1:

<?php
if ($text{$num_char - 1} != ' ') {
	$num_char = strpos($text, ' ', $num_char); // cari posisi spasi, pencarian dilakukan mulai posisi 50
}
echo substr($text, 0, $num_char) . '...';

Script 2:

<?php
$char     = $text{$num_char - 1};
while($char != ' ') {
	$char = $text{++$num_char}; // Cari spasi pada posisi 51, 52, 53, dst...
}
echo substr($text, 0, $num_char) . '...';

Kedua script diatas sama sama menghasilkan kalimat Contoh script yang digunakan untuk memotong 50 fungsi… , script pertama lebih simpel dan mudah dibaca/difahami, namun setelah dites, lagi lagi script ke dua yang menggunakan string index ($text{++$num_char}) rata-rata waktu eksekusinya 5x lebih cepat dibanding dengan script pertama.

Membuat Fungsi Untuk Memotong Teks, Kalimat atau Paragraf pada PHP

Ketiga kondisi diatas dapat kita kumpulkan menjadi satu fungsi sehingga kode lebih terorganisir dan lebih mudah digunakan. contoh  fungsi untuk memotong teks atau kalimat dengan PHP:

<?php
function cutText($text, $length, $mode = 2)
{
	if ($mode != 1)
	{
		$char = $text{$length - 1};
		switch($mode)
		{
			case 2: 
				while($char != ' ') {
					$char = $text{--$length};
				}
			case 3:
				while($char != ' ') {
					$char = $text{++$num_char};
				}
		}
	}
	return substr($text, 0, $length);
}

fungsi diatas dapat kita coba dengan menjalankan perintah berikut:

<?php
$text = 'Contoh script yang digunakan untuk memotong 50 huruf pertama dari teks, kalimat atau paragraf dengan php';
echo cutText($text, 50, 1) . '...'; // Contoh script yang digunakan untuk memotong 50 hur...
echo cutText($text, 50) . '...'; // Contoh script yang digunakan untuk memotong 50...
echo cutText($text, 50, 3) . '...'; // Contoh script yang digunakan untuk memotong 50 huruf...

Demikian tutorial mengenai cara memotong teks, kalimat atau paragraf dengan PHP, semoga bermanfaat.

Subscibe Now

Suka dengan artikel di Jagowebdev.com? jangan sampai ketinggalan, segera join ke milis kami untuk update informasi terbaru dari Jagowebdev.com

Komitmen Kami: Kami senantiasa menghargai privasi Anda dan tidak akan membagikan identitas Anda ke pihak manapun.

Recomended Post

12 Feedback dari pembaca

    • Mungkin bisa disertakan contoh kalimat dan model pemotongannya seperti apa mbak, karena cakupannya terlalu luas.
      Intinya tentukan terlebih dahulu posisi karakter / kata yang ingin dipecah

  • om bisa buatin script php seperti ini nggak om? maaf om sy tidak bisa buat script php sendiri, bisanya cuma pakai jadi saja dari google, belajar otodidak pusing bangett

    *sebelum di script*
    aku cinta indonesia

    *setelah di script menghasilkan*
    cinta aku indonesia
    indonesia aku cinta

    makasih banyak nih om kalau mau dibuatin

    • Coba pakai explode mbak:

      $string = 'aku cinta indonesia';
      $split 	= explode(' ', $string);
      echo $split[1] . ' ' . $split[0] . ' ' . $split[2]; // cinta aku indonesia
      echo $split[2] . ' ' . $split[0] . ' ' . $split[1]; // indonesia aku cinta
      

    • Pakai HTML ngga bisa mas, intinya HTML tidak bisa memproses data, karena hanya bahasa deklaratif saja.
      Mungkin maksudnya CSS ya mas? kalau pakai CSS bisa menggunakan property text-overflow, misal:

      .cut-text {
      	white-space: nowrap;
      	text-overflow: ellipsis;
      }

    • Pakai exolode untuk memecah string menjadi array mas, sesuai dengan karakter yang digunakan untuk memecah string tersebut. Bisa dicontohkan bentuk daftar pustaka nya seperti apa dan bentuk array yang diinginkan seperti apa?

  • pak kalau misalnya saya pengen nampilin kalau huruf nya lebih dari 20 maka dilanjutkan titik titik tapi kalau huruf nya kurang dari 20 maka ngga pake titik titik
    kaya gini misalnya.

    aku mau ke sekolah hari ini

    kalau di substr kan jadi gini = aku mau ke sekolah hari…
    nah kalau cuma

    aku mau ke sekolah
    tampilnya tetep “aku mau ke sekolah” aja
    dibelakangnya ngga pake titik titik “aku mau ke sekolah…”
    gini

    • Tinggal di cek saja mas jumlah karakter yang dipotong menggunakan strlen, jika lebih dari 20 tambahkan titik titik…
      Misal

      <?php
      $text = 'Contoh teks disini';
      
      if (strlen($text) < 20) {
      	echo $text;
      } else {
      	$cut_text = substr($text, 0, $num_char);
      	if ($text{$num_char - 1} != ' ') { // jika huruf ke 50 (50 - 1 karena index dimulai dari 0) buka  spasi
      		$new_pos = strrpos($cut_text, ' '); // cari posisi spasi, pencarian dari huruf terakhir
      		$cut_text = substr($text, 0, $new_pos);
      	}
      	echo $cut_text . '...';
      }

Silakan tinggalkan komentar

Newsletter

Jadilah yang pertama tahu berita terbaru dari Jagowebdev.com

Jasa Konsultasi PHP MySQL Website Dengan Ahlinya

Like Us

  1. Same Origin Policy – Apa dan Bagaimana Mengatasinya?

  2. JSONP Dengan Javascript dan jQuery – Lintas Domain

  3. JSON Pada Javascript – Panduan Lengkap

  4. JSON Pada Dokumen HTML

  5. JSON Dari Database – PHP dan MySQL

  6. Memahami JSON Pada PHP

  7. Panduan Lengkap Memahami JSON

  8. Memahami Tipe Data Pada PHP

  9. Query MySQL di Dalam PHP Loop – Bad Practice !!!

  10. Software Kompres dan Optimasi Gambar / Foto (JPG dan PNG) – Tested