ด้วยสํานึกในพระมหากรุณาธิคุณสมเด็จพระนางเจ้าสิริกิติ์เป็นล้นพ้นอันหาที่สุดมิได้
ด้วยสํานึกในพระมหากรุณาธิคุณสมเด็จพระนางเจ้าสิริกิติ์เป็นล้นพ้นอันหาที่สุดมิได้


แก้ไขการตัดข้อความด้วย substrใน php แล้วมีรูปสี่เหลี่ยม

เขียนเมื่อ 16 ปีก่อน โดย Ninenik Narkdee
php ตัดข้อความ

คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ php ตัดข้อความ

ปัจจุบัน นักพัฒนาสามารถ ใช้ ChatGPT | Gemini | Claude | Perplexity | Deepseek ช่วยในการแก้ไขปัญหาต่างๆ ในการเขียนโปรแกรม หรือหาข้อมูลเพิ่มเติมได้ง่ายและสะดวก แนะนำให้ทุกคนใช้งานเพื่อพัฒนาศักยภาพของตัวเอง

ดูแล้ว 13,265 ครั้ง


ใช้ตัดข้อความจากฐานข้อมูลที่ต้องการแสดงบางส่วนเช่น 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()

ตัวอย่าง

<?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 ที่ไม่ต้องการ
// ข้อความทดสอบขนาด ยาวกว่าป...

?>









เนื้อหาที่เกี่ยวข้อง









URL สำหรับอ้างอิง








เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ