Cách đây ít lâu, tôi đã đăng cách trích xuất tên miền, đường dẫn, v.v. từ một url bằng PHP và trong bài đăng tiếp theo này cho biết cách trích xuất chuỗi truy vấn thành một mảng kết hợp bằng cách sử dụng hàm parse_str
Trích xuất chuỗi truy vấn bằng parse_url
Trong ví dụ này, chúng tôi sẽ xem xét URL từ truy vấn [chris hope] tại Google [nhân tiện, tôi không hiển thị cho đến trang thứ hai] trông như thế này
//www.google.com/search?hl=en&source=hp&q=chris+hope&btnG=Google+Search&meta=&aq=f&oq=
Sử dụng parse_url, chúng ta có thể dễ dàng trích xuất chuỗi truy vấn như vậy
$parts = parse_url[$url]; echo $parts['query'];
Đầu ra từ trên sẽ là cái này
hl=en&source=hp&q=chris+hope&btnG=Google+Search&meta=&aq=f&oq=
Bên cạnh đó, trước khi tiếp tục sử dụng parse_str để trích xuất các phần riêng lẻ của chuỗi truy vấn, hãy thực hiện print_r[$parts] sẽ hiển thị điều này
Array [ [scheme] => http [host] => www.google.com [path] => /search [query] => hl=en&source=hp&q=chris+hope&btnG=Google+Search&meta=&aq=f&oq= ]
Trích xuất các phần chuỗi truy vấn bằng parse_str
Hàm parse_str nhận một hoặc hai tham số [tham số thứ hai từ PHP 4. 0. 3] và không trả về bất kỳ giá trị nào. Nếu có tham số thứ hai, các giá trị từ chuỗi truy vấn được trả về trong tham số đó dưới dạng một mảng kết hợp. Nếu nó không có mặt, thay vào đó chúng được đặt thành các biến trong phạm vi hiện tại, điều này không thực sự lý tưởng
Vì vậy, không có tham số đầu tiên
parse_str[$parts['query']];
Bây giờ bạn có thể lặp lại giá trị "q" như thế này
echo $q;
Theo ý kiến của tôi, sẽ tốt hơn nếu các giá trị được trả về dưới dạng một mảng như vậy
parse_str[$parts['query'], $query];
Bây giờ làm print_r[$query] sẽ xuất ra cái này
Array [ [hl] => en [source] => hp [q] => chris hope [btnG] => Google Search [meta] => [aq] => f [oq] => ]
Giá trị "q" bây giờ có thể được lặp lại như thế này
________số 8Theo dõi bài viết
Hãy đọc bài viết của tôi có tiêu đề "PHP. lấy từ khóa từ url tham chiếu của công cụ tìm kiếm" để tìm hiểu cách sử dụng hàm parse_url kết hợp với hàm parse_str để xem chuỗi truy vấn mà khách truy cập đã nhập vào công cụ tìm kiếm
Hai trường hợp có thể phát sinh. hoặc URL ở dạng chuỗi và chúng tôi muốn tìm các phần của nó hoặc đó là một trang Web và chúng tôi muốn truy xuất tất cả thông tin về nó hoặc lấy dữ liệu từ một biểu mẫu
1] Sử dụng hàm parse_url
Để phân tích một URL trong một chuỗi, hai chức năng sẽ hữu ích, parse_url và parse_str. Cái đầu tiên chia một URL thành nhiều phần giống như đối tượng Vị trí trong JavaScript, cái thứ hai chia một chuỗi tham số thành các biến và giá trịSo sánh với JavaScript
Hàm parse_url tương đương với đối tượng Vị trí trong JavaScript. Các khóa của mảng kết hợp được thay thế bằng các thuộc tính của đối tượng Vị trí
URL đầy đủ thu được với hằng số __FILE__ được xác định trước và không thuộc về bảng được tạo bởi parse_url
Dữ liệu URL đầy đủGiao thức [http]Tên miềnThư mục và tệpNeo trong trangTham sốCổngĐăng nhậpMật khẩuThư tín PHP - JavaScript
khác biệt khác
- Nếu một người thêm cả neo nội bộ và tham số, điều này không chính xác, thì tất cả sẽ liên quan đến hàm băm trong JavaScript và truy vấn PHP
- Trong JavaScript, giao thức bao gồm dấu hai chấm, như trong http. nhưng không phải trong PHP
Sử dụng hàm parse_url
Thí dụ
$url = "//www.scriptol.com/how-to/parsing-url.php#content";
$arr = parse_url[$url]
print_r[$arr];
Điều này đưa ra một mảng kết hợp trong đó các phím được trình bày chi tiết trong bảng trên
$parts = parse_url[$url]; echo $parts['query'];0
Sử dụng hàm parse_str
Thí dụ
$parts = parse_url[$url]; echo $parts['query'];1
$data là một mảng kết hợp, trong đó khóa là các biến được cung cấp dưới dạng tham số và giá trị là nội dung của các biến này
Hầu như tất cả các nhà phát triển ít nhất một lần trong thực tế của họ đã tự hỏi làm thế nào để lấy các tham số từ một chuỗi URL với sự trợ giúp của các hàm PHP
Trong hướng dẫn của chúng tôi, chúng tôi sẽ cung cấp cho bạn hai chức năng đơn giản và tiện dụng như pase_url[] và parse_str[] sẽ cho phép bạn làm điều đó
Đọc và kiểm tra các tùy chọn dưới đây
Trước khi bắt đầu, hãy lưu ý rằng các tham số và URL được phân tách bằng dấu ?
Trong trường hợp bạn muốn lấy URI hiện tại, bạn có thể sử dụng $url = $_SERVER[REQUEST_URI];
Chức năng này nhằm mục đích trả về các thành phần URL bằng cách phân tích cú pháp URL
Vì vậy, nó phân tích cú pháp URL, trả về một mảng kết hợp bao gồm các thành phần khác nhau
Cú pháp của hàm parse_url[] như sau
$parts = parse_url[$url]; echo $parts['query'];2
Với sự trợ giúp của hàm parse_str[], bạn có thể phân tích các chuỗi truy vấn thành các biến
Cú pháp của hàm này là như vậy
$parts = parse_url[$url]; echo $parts['query'];3
Bây giờ, hãy xem các ví dụ về cách sử dụng hai hàm này để lấy các tham số từ chuỗi URL
Đầu ra của ví dụ này sẽ là
$parts = parse_url[$url]; echo $parts['query'];4
Bây giờ, hãy xem xét một ví dụ khác
Và, đầu ra của ví dụ này sẽ như thế này
$parts = parse_url[$url]; echo $parts['query'];5
Vì vậy, trong hướng dẫn này, chúng tôi đã nêu bật hai chức năng tiện dụng sẽ cho phép nhận tham số từ chuỗi URL bằng PHP