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.

4  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.

45 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;
      }
  • mas bisa minta tolong gak, saya punya kasus untuk memecah daftar pustaka menjadi array bagaimana ya? saya pakai fungsi explode tapi kurang paham bagaimana implementasinya

    • 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 . '...';
      }
  • pak, kalo mau bikin readmore gimna ? pakai tombol button, ngambil data dari database. semisal
    $key->profile_news;

    saya pakai framework codeigniter. Terima kasih.

  • pak kalo misal mau seperti koran gimana ? koran kan ada tuh yang cerita bersambung terus ada lanjutannnya di halaman berikutnya atau dimanapun. Ya intinya dibagi 2. Terimakasih

  • Mas kalau nampilin data sesuai inputan ke db gimna ya
    Misal kita input
    1. Pendidikan SMA
    2. Pendidikan SMP
    Kalau outputnya sesuai itu gimana ya.
    Soalnya udah coba malah tampilin malah tampil gini 1. Pendidikan SMA 2. Pendidikan SMP nyambung gitu

  • pak klo menambilkan kata yang mengandung hruf tertentu gimana ya..? contohnya kalimat “dimana budi bekerja”. yang akan di tampilkan kata yang mengandung “di” berarti kata yang tampil dimana, yang lainnya abaikan atau hidden.

    • coba menggunakan substr mas, jadi teksnya di split dulu berdasarkan spasi, misal: explode(‘ ‘, $teks) selanjutnya array hasil explode tersebut di loop, masing maing kata di cek pakai strpos apakah mengandung kata depan di jika ya maka disimpan ke variabel tersentu, kemudian variabel tertentu tersebut ditampilkan

  • Gan tolong bantuannya, pada artikel detail itu textnya malah panjang kesamping melebihi width dari body itu gimana ya gan solusinya ? [PHP]/[laravel]

  • Oalah makasih mas….
    Kalo misalnya ngilangin tag html dari ckeditor itu gimana yaa?

  • kalau string “makanan” kemudian dipecah menjadi beberapa bagian seperti “ma, ka, nan” gimana ya bang

  • mas kalau memecah kata contoh kalimat : smartphone android yang bagus
    kemudian jadi seperti ini : smartphone
    android
    yang
    bagus

  • dari komen agan “coba menggunakan substr mas, jadi teksnya di split dulu berdasarkan spasi, misal: explode(‘ ‘, $teks) selanjutnya array hasil explode tersebut di loop, masing maing kata di cek pakai strpos apakah mengandung kata depan di jika ya maka disimpan ke variabel tersentu, kemudian variabel tertentu tersebut ditampilkan”

    mungkin bisa dicontohkan kodingannya gan, thank you.

  • mas mau nanya text saya kan di masukan di tabel tapi text nya selalu terpotong di ujung kata nya misalkan :
    ‘gejala dan sebab utama masalah pengem
    bangan software’

    saya mengambil data dari data base dan di masukan ke tabel, bisa minta solusi nya gan?

  • Gan Mau tanya misal kita ada 1 kalimat
    Lorem ipsum dolor iset Lorem ipsum dolor iset Lorem ipsum dolor iset
    Lorem ipsum dolor iset Lorem ipsum dolor iset

    nah kita mau setiap 4 kata itu langsung ke break line /enter
    maka jadinya seperti ini
    Lorem ipsum dolor iset
    Lorem ipsum dolor iset
    Lorem ipsum dolor iset
    Lorem ipsum dolor iset

    • Itu kalimatnya bisa di explode dulu berdasarkan spasi mas, misal:
      $array = explode(‘ ‘, $kalimat);
      Selanjutny dibikin loop dimana setiap hitungan keempat ditambahkan break, misal:

      $result = ''
      foreach ($array as $index => $val) {
      	$result .= $val;
      	if ( !($index+ 1) % 4) {
      		$result .= '<br>';
      	}
      }
      echo $result;
  • disini saya ada kasus contoh sebuah kalimat “budi pergi kepasar dengan terbang” untuk tiap kosakata kan dia bunyinya gini bu-di per-gi ke-pa-sar deng-an ter-bang supaya saat mau menghasilakn seperti itu gimana yah pak masih bingung implementasi dari penggunaan ar,ir,or,er atau ang,ing,ung,ong

  • Mas mau tanya, jika ingin mengambil 2 angka dari kiri di angka 4123456789 (angka 12) kemudian nanti di depan angka 12 yg diiambil itu ditambahkan angka 20, jadinya 2012 gitu. mohon bantuannya. terimakasih.

Silakan tinggalkan komentar

Newsletter

Jadilah yang pertama tahu berita terbaru dari Jagowebdev.com