Sử dụng parse_url () và parse_str () .
(Bạn có thể sử dụng regexes cho bất cứ thứ gì, nhưng chúng rất dễ gây ra lỗi, vì vậy nếu có các hàm PHP đặc biệt cho những gì bạn đang cố gắng thực hiện, hãy sử dụng chúng.)
parse_url lấy một chuỗi và cắt nó thành một mảng có một loạt thông tin. Bạn có thể làm việc với mảng này hoặc bạn có thể chỉ định một mục bạn muốn làm đối số thứ hai. Trong trường hợp này, chúng tôi quan tâm đến truy vấn, đó là PHP_URL_QUERY
.
Bây giờ chúng tôi có truy vấn, đó là v=C4kxS1ksqtw&feature=relate
, nhưng chúng tôi chỉ muốn phần sau v=
. Đối với điều này, chúng ta chuyển sang parse_str
cơ bản hoạt động như GET
trên một chuỗi. Nó nhận một chuỗi và tạo các biến được chỉ định trong chuỗi. Trong trường hợp này $v
và $feature
được tạo ra. Chúng tôi chỉ quan tâm đến $v
.
Để an toàn, bạn không muốn chỉ lưu trữ tất cả các biến từ parse_url
trong không gian tên của mình (xem bình luận của mellow gió). Thay vào đó, lưu trữ các biến dưới dạng các phần tử của một mảng, để bạn có quyền kiểm soát các biến bạn đang lưu trữ và bạn không thể vô tình ghi đè lên một biến hiện có.
Đặt mọi thứ lại với nhau, chúng ta có:
<?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
?>
Ví dụ làm việc
Biên tập:
hehe - cảm ơn Charles. Điều đó làm tôi bật cười, tôi chưa bao giờ thấy trích dẫn của Zawinski trước đây:
Some people, when confronted with a problem, think ‘I know, I’ll use regular expressions.’ Now they have two problems.
- Jamie Zawinski