ใช้ parse_url ()และparse_str ()()
(คุณสามารถใช้ regexes เพื่ออะไรก็ได้ แต่มันง่ายมากที่จะทำให้เกิดข้อผิดพลาดดังนั้นถ้ามีฟังก์ชั่น PHP เฉพาะสำหรับสิ่งที่คุณพยายามจะทำให้ใช้มัน)
parse_url รับสตริงและตัดเป็นอาร์เรย์ที่มีข้อมูลจำนวนมาก คุณสามารถทำงานกับอาร์เรย์นี้หรือคุณสามารถระบุรายการที่คุณต้องการเป็นอาร์กิวเมนต์ที่สอง ในกรณีนี้เราสนใจคำถามซึ่งก็คือPHP_URL_QUERY
ในกรณีนี้เรากำลังสนใจในแบบสอบถามซึ่งเป็น
ตอนนี้เรามีแบบสอบถามซึ่งเป็นแต่เราต้องการเพียงส่วนหนึ่งหลังจากที่v=C4kxS1ksqtw&feature=relate
v=
สำหรับสิ่งนี้เราจะหันไปหาparse_str
สิ่งที่ใช้งานได้ดีGET
บนสายอักขระ มันต้องใช้สตริงและสร้างตัวแปรที่ระบุในสตริง ในกรณีนี้$v
และ$feature
ถูกสร้างขึ้น เราสนใจเท่านั้น$v
เรากำลังสนใจเฉพาะใน
เพื่อความปลอดภัยคุณไม่ต้องการเพียงแค่เก็บตัวแปรทั้งหมดจาก parse_url
ในเนมสเปซของคุณ (ดูความคิดเห็น mellowsoon) แทนที่จะเก็บตัวแปรไว้เป็นองค์ประกอบของอาเรย์เพื่อให้คุณสามารถควบคุมตัวแปรที่คุณกำลังเก็บและคุณไม่สามารถเขียนทับตัวแปรที่มีอยู่โดยไม่ตั้งใจได้
การรวมทุกอย่างเข้าด้วยกันเรามี:
<?php
$url = "http://www.youtube.com/watch?v=C4kxS1ksqtw&feature=relate";
parse_str( parse_url( $url, PHP_URL_QUERY ), $my_array_of_vars );
echo $my_array_of_vars['v'];
// Output: C4kxS1ksqtw
?>
ตัวอย่างการทำงาน
แก้ไข:
ฮิฮิ - ขอบคุณชาร์ลส์ นั่นทำให้ฉันหัวเราะฉันไม่เคยเห็นคำพูดของ Zawinski มาก่อน:
Some people, when confronted with a problem, think ‘I know, I’ll use regular expressions.’ Now they have two problems.
- เจมี่ซาวินสกี