php ตัดข้อความ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา php ตัดข้อความ

php ตัดข้อความ
ถ้าต้องการตัดข้อความแบบนี้

3/advente-wireless-kinetic-doorbell-fa-582p-1496219414-0434568-1c9bcc7d6c64b5e6accc6e74b61a5277

ให้เหลือแค่ประมาณนี้ทำอย่างไรคะ


3/1496219414-0434568-1c9bcc7d6c64b5e6accc6e74b61a5277


Kaewkan Chiwden Kansomboon 09-10-2017 17:25:01

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
ดูเนื้อหาจากลิ้งค์นี้เป็นแนวทาง

การตัดข้อความ


ninenik 09-10-2017
 ความคิดเห็นที่ 2
คือข้อความที่จะตัดมันไม่เหมือนกันค่ะ ต้องการจริงๆ จะเป็นแบบนี้ค่ะ

ข้อความก่อนตัด
https://th-live-02.slatic.net/p/3/advente-wireless-kinetic-doorbell-fa-582p-1496219414-0434568-1c9bcc7d6c64b5e6accc6e74b61a5277-product.jpg

ข้อความหลังตัด


https://th-live-02.slatic.net/p/3/1496219414-0434568-1c9bcc7d6c64b5e6accc6e74b61a5277-product.jpg


ข้อความก่อนตัด
https://th-live-01.slatic.net/p/3/lovely-starfish-ceramic-drawer-cabinet-cupboard-door-pull-handle-knob-multicolor-intl-1506141546-36838344-fa71d156c306d6cf23b24face713f656-product.jpg

ข้อความหลังตัด

https://th-live-01.slatic.net/p/3/1506141546-36838344-fa71d156c306d6cf23b24face713f656-product.jpg


ซึ่งแต่ละข้อความจะไม่เหมือนกันค่ะ ไม่ทราบว่าจะต้องใช้วิธีไหนเพิ่มเติมค่ะ


Kaewkan Chiwden Kansomboon 10-10-2017 09:34
 ความคิดเห็นที่ 3
ศึกษาการใช้งาน Regular Expression จะมีประโยชน์ในการนำไปประยุกต์ใช้
 
 
ลองดูแนวทางนี้
 
วิเคราะห์ ค่าของข้อมูลหาความสัมพันธ์ หรือจุดที่จะใช้เป็นตัวกำหนด การแยกข้อความ การตัดข้อความ การแทนที่ข้อความ
สมมติ
 
https://th-live-02.slatic.net/p/3/advente-wireless-kinetic-doorbell-fa-582p-1496219414-0434568-1c9bcc7d6c64b5e6accc6e74b61a5277-product.jpg
 
https://th-live-01.slatic.net/p/3/lovely-starfish-ceramic-drawer-cabinet-cupboard-door-pull-handle-knob-multicolor-intl-1506141546-36838344-fa71d156c306d6cf23b24face713f656-product.jpg
 
ส่วนที่ต้องการตัดออกคือ ส่วนที่ highlight สีเหลือง แต่เนื่องจากค่าตรงสีเหลือง ไม่เหมือนกัน ความยาวก็ไม่เหมือนกัน
ดังนั้น ให้ดูตัวที่อยู่ติดๆ ทั้งสองข้าง กับส่วนของ สีเหลือง ว่าพอจะมีอะไรที่สัมมพันธ์กันไหม 
เราจะเห็นว่า ตรงสีแดงฝั่งซ้าย คือค่าที่เหมือนกัน และไม่มีซ้ำในจุดอื่นๆ ในข้อความ
ส่วนตรงสีน้ำเงินฝั่งขวา เราเห็นว่า เป็นตัวเลข ที่เป็นค่าไม่ซ้ำกัน แต่มีจำนวน 10 ตัวเหมือนกัน และไม่ซ้ำจุดอื่นใดอีกในข้อความ
เราก็ใช้สองจุดนี้สร้างเงื่อนไขกำหนด pattern หรือรูปแบบการใช้งาน Regular Expression เป็นดังนี้
 
/(\.net\/p\/3\/)|([0-9]{10})/
ชุดแรก คือฝั่งซ้าย
 
มีข้อความว่า (.net/p/3/)  พอเป็น regular expression pattern ตัวอักขระพิเศษ เราจะต้องกำกับด้วย \ ก็จะได้เป็น
 
(\.net\/p\/3\/)|
 
ต่อด้วย | (หรือ) ชุดที่สอง
ที่เป็นตัวเลข 10 หลัก
 
([0-9]{10})
 
พอเราได้จุดตำแหน่งข้อความ ด้วย pattern ที่ต้องการจัดการกับข้อความแล้ว ต่อไปเราต้องรู้จักฟังก์ชั่น ของ  regular expression
เพิ่มเติมด้วย เพื่อที่จะประยุกต์ใช้งานได้ ในที่นี้เราจะใช้คำสั่ง preg_split() คือ แยกข้อความจากรูปแบบที่กำหนด
 
ตัวอย่างโค้ดที่ได้
 
<?php
$str = "https://th-live-02.slatic.net/p/3/advente-wireless-kinetic-doorbell-fa-582p-1496219414-0434568-1c9bcc7d6c64b5e6accc6e74b61a5277-product.jpg";
echo $str;
echo "<hr>";
$result = preg_split('/(\.net\/p\/3\/)|([0-9]{10})/',$str,-1,PREG_SPLIT_DELIM_CAPTURE);
$new_str = $result[0].$result[1].$result[4].$result[5];
print_r($result);
echo "<hr>";
echo $new_str;
?>
ผลลัพธ์ที่ได้
 
https://th-live-02.slatic.net/p/3/advente-wireless-kinetic-doorbell-fa-582p-1496219414-0434568-1c9bcc7d6c64b5e6accc6e74b61a5277-product.jpg
________________
Array
(
    [0] => https://th-live-02.slatic
    [1] => .net/p/3/
    [2] => advente-wireless-kinetic-doorbell-fa-582p-
    [3] => 
    [4] => 1496219414
    [5] => -0434568-1c9bcc7d6c64b5e6accc6e74b61a5277-product.jpg
)
________________
https://th-live-02.slatic.net/p/3/1496219414-0434568-1c9bcc7d6c64b5e6accc6e74b61a5277-product.jpg
 


ninenik 10-10-2017
1






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