แก้ไขการตัดข้อความด้วย substrใน php แล้วมีรูปสี่เหลี่ยม
เขียนเมื่อ 14 ปีก่อน โดย Ninenik Narkdeephp ตัดข้อความ
คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ php ตัดข้อความ
ไปที่
Copy
ใช้ตัดข้อความจากฐานข้อมูลที่ต้องการแสดงบางส่วนเช่น 30 ตัวอักษร กรณีบางครั้งภาษาไทยที่ตัดจากฐานข้อมูล จะแสดงเป็นรูปสี่เหลี่ยม ใช้ฟังก์ชันนี่แทน substr ใน php แก้ปัญหาที่เกิดได้
แบบที่ 1
<?php function substr_utf8( $str, $start_p , $len_p){ return preg_replace( '#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$start_p.'}'. '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len_p.'}).*#s', '$1' , $str ); }; // การใช้งาน // $start_p คือตำแหน่งเริ่มต้นตัดข้อความ // $len_p คือจำนวนตัวอักษรที่ต้องการแสดง // $data="ข้อความทดสอบ ข้อความทดสอบ ข้อความทดสอบ ข้อความทดสอบข้อความทดสอบ "; // echo substr_utf8($data,0,30); ?>
แบบที่ 2
<?php function utf8_substr($str,$start_p,$len_p) { preg_match_all("/./u", $str, $ar); if(func_num_args() >= 3) { $end = func_get_arg(2); return join("",array_slice($ar[0],$start_p,$len_p)); } else { return join("",array_slice($ar[0],$start_p)); } } // การใช้งาน // $start_p คือตำแหน่งเริ่มต้นตัดข้อความ // $len_p คือจำนวนตัวอักษรที่ต้องการแสดง // $data="ข้อความทดสอบ ข้อความทดสอบ ข้อความทดสอบ ข้อความทดสอบข้อความทดสอบ "; // echo utf8_substr($data,0,30); ?>
เพิ่มเติมเนื้อหา ครั้งที่ 1 วันที่ 23-10-2017
แบบที่ 3
ใช้ฟังก์ชั่น mb_substr()
ตัวอย่าง
ใช้ฟังก์ชั่น mb_substr()
ตัวอย่าง
<?php $text = "วันนี้ทดสอบบบ"; echo mb_substr($text,0,-2); // จะได้ผลลัพธ์เป็น "วันนี้ทดสอบ" ?>
เพิ่มเติมเนื้อหา ครั้งที่ 2 วันที่ 30-01-2020
แบบที่ 4
ใช้ฟังก์ชั่น mb_strimwidth() ซึ่งนอกจากจะตัดข้อความแล้ว เรายังสามารถเพิ่มส่วนของข้อความ
ที่ต้องการแสดงแทนข้อความที่ตัดออกไปได้ เช่น ใช่ ... ต่อท้ายข้อความ เป็นต้น
<?php $msg = " ข้อความทดสอบขนาด ยาวกว่าปกติ ข้อความทดสอบขนาด ยาวกว่าปกติ ข้อความทดสอบขนาด ยาวกว่าปกติ ข้อความทดสอบขนาด ยาวกว่าปกติ ข้อความทดสอบขนาด ยาวกว่าปกติ "; echo mb_strimwidth($msg, 0, 50); // ข้อความทดสอบขนาด ยาวกว่าปกติ ข้อความทดสอบขนาด ยา echo mb_strimwidth($msg, 0, 50, '...'); // ข้อความทดสอบขนาด ยาวกว่าปกติ ข้อความทดสอบขนาด... echo mb_strimwidth($msg, 0, 50, '...', 'UTF-8'); // ป้องกันกรณี ภาษาไทย // ข้อความทดสอบขนาด ยาวกว่าปกติ ข้อความทดสอบขนาด... $msg2 = "<string> ข้อความทดสอบขนาด ยาวกว่าปกติ ข้อความทดสอบขนาด ยาวกว่าปกติ ข้อความทดสอบขนาด ยาวกว่าปกติ ข้อความทดสอบขนาด ยาวกว่าปกติ ข้อความทดสอบขนาด ยาวกว่าปกติ </strong>"; echo mb_strimwidth(strip_tags($msg2), 0, 30, '...', 'UTF-8'); // ป้องกันกรณี ภาษาไทย และลบ tag html ที่ไม่ต้องการ // ข้อความทดสอบขนาด ยาวกว่าป... ?>
กด Like หรือ Share เป็นกำลังใจ ให้มีบทความใหม่ๆ เรื่อยๆ น่ะครับ

เนื้อหาที่เกี่ยวข้อง
-
29 Mar2009ทบทวนการตัดข้อความด้วย PHP อ่าน 73,770
เมื่อต้องการตัดข้อความบางส่วนออกจากข้อความต้นฉบับ สามารถใช้ฟังก์ชัน substr() ของ
Tags::
php
ตัดข้อความ
URL สำหรับอ้างอิง
Top
Copy
ขอบคุณทุกการสนับสนุน
![]()