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:
- Ambil 50 huruf pertama.
- Jika berupa spasi, maka potong pada posisi tersebut.
- 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:
- Ambil 50 huruf pertama.
- Jika berupa spasi, maka potong pada posisi tersebut.
- 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
45 Feedback dari pembaca
kalau memotong 1 kalimat menjadi 2 kalimat berdasarkan frasa gimana gan ??
tanpa memotong kata.
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:
mastah kalo pake html bisa gk ya, kalo bisa gimana ya, kalo bisa juga si di posting aja ya biar lebih jelas
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:
makasih mas ilmunya. happy coding.
Sama sama mas…
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
pak, kalo mau bikin readmore gimna ? pakai tombol button, ngambil data dari database. semisal
$key->profile_news;
saya pakai framework codeigniter. Terima kasih.
Read more di link kan ke artikel penuhnya mas, misal Read Mode
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
Tinggal dikasi link untuk read more mas, coba googling membuat readmore dengan php
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
Itu cuman masalah tampilan HTML nya saja mas, bisa coba pakai fungsi php nl2br()
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]
Itu lebih ke css nya mas, word-wrap, atau container dari text itu sendiri
Oalah makasih mas….
Kalo misalnya ngilangin tag html dari ckeditor itu gimana yaa?
Itu rumit mas, bisa dilakukan via php ketika data disubmit atau pake javascript override ckeditornya (tapi rumit)
kalau string “makanan” kemudian dipecah menjadi beberapa bagian seperti “ma, ka, nan” gimana ya bang
Itu harus di pecah manual mas…
makasih mas atas tutorialnya, lagi belajar bangun CMS sendiri hehe
Sama sama mas, semangat ya…
Mas, Kalo Bikinn paging seperti tribun News Gmn ya, satu artikel bisa beberapa page
Maaf bisa dicontohkan linknya mas?
mas kalau memecah kata contoh kalimat : smartphone android yang bagus
kemudian jadi seperti ini : smartphone
android
yang
bagus
Bisa pake fungsi explode mas, misal:
$string = “smartphone android yang bagus”;
$split = explode(” “, $string);
echo join($split, ‘
‘);
Mas kalau buat 1 Article multi pages gmn ya ,..?
contohnya : https://jakarta.tribunnews.com/2020/09/10/7-obat-tradisional-atasi-batuk-pilek-pada-anak-ampuh-tanpa-obat-kimia?page=2&_ga=2.77276700.842712470.1599732667-1067739274.1598848109
Belum pernah mencoba yang seperti itu mas, bisa coba di googling
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.
Misal:
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?
Coba di cetak query sql nya mas kemudian di cek permasalahannya dimana
terima kasih
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:
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
Itu perlu dibuat mapping kata yang harus di pecah mas, tidak bisa otomatis
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.
Bisa menggunakan substr mas: