php ตัดข้อความ
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา php ตัดข้อความ
php ตัดข้อความ
ถ้าต้องการตัดข้อความแบบนี้
3/advente-wireless-kinetic-doorbell-fa-582p-1496219414-0434568-1c9bcc7d6c64b5e6accc6e74b61a5277
ให้เหลือแค่ประมาณนี้ทำอย่างไรคะ
3/1496219414-0434568-1c9bcc7d6c64b5e6accc6e74b61a5277
3/advente-wireless-kinetic-doorbell-fa-582p-1496219414-0434568-1c9bcc7d6c64b5e6accc6e74b61a5277
ให้เหลือแค่ประมาณนี้ทำอย่างไรคะ
3/1496219414-0434568-1c9bcc7d6c64b5e6accc6e74b61a5277

คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
ความคิดเห็นที่
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
ซึ่งแต่ละข้อความจะไม่เหมือนกันค่ะ ไม่ทราบว่าจะต้องใช้วิธีไหนเพิ่มเติมค่ะ
ข้อความก่อนตัด
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
ซึ่งแต่ละข้อความจะไม่เหมือนกันค่ะ ไม่ทราบว่าจะต้องใช้วิธีไหนเพิ่มเติมค่ะ

ความคิดเห็นที่
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() คือ แยกข้อความจากรูปแบบที่กำหนด
ตัวอย่างโค้ดที่ได้
1 2 3 4 5 6 7 8 9 10 | <?php 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

ขอบคุณทุกการสนับสนุน
![]()