Người dùng có thể nhập URL bằng biểu mẫu HTML trên trang web của tôi, để họ có thể nhập một cái gì đó như thế này: http://www.example.com?test=123&random=abc, nó có thể là bất cứ điều gì. Tôi cần trích xuất giá trị của một tham số truy vấn nhất định, trong trường hợp này là 'test' (giá trị 123). Có cách nào để làm việc này không?Làm cách nào để trích xuất tham số truy vấn từ chuỗi URL trong PHP?
Trả lời
Bạn có thể sử dụng parse_url
và parse_str
như thế này:
$query = parse_url('http://www.example.com?test=123&random=abc', PHP_URL_QUERY);
parse_str($query, $params);
$test = $params['test'];
parse_url
cho phép chia nhỏ một URL trong các phần khác nhau (chương trình, chủ nhà, con đường, truy vấn, vv); ở đây chúng tôi sử dụng nó để chỉ nhận được truy vấn (test=123&random=abc
). Sau đó, chúng tôi có thể phân tích cú pháp truy vấn với parse_str
.
Dường như parse_url ném một lỗi PHP khi sử dụng một số URL nhất định, hãy xem nhận xét này trên php.net: http://www.php.net/manual/en/function.parse-url.php#96433 –
Có, có vẻ như nó không hoạt động trên các URL không có ' thành phần host'. Điều này sẽ hoạt động với các URL giống HTTP hợp lệ. – arnaud576875
Vì vậy, có cách nào khác để làm điều này không? –
Tôi cần kiểm tra url tương đối cho hệ thống của mình để tôi không thể sử dụng parse_str. Đối với bất cứ ai cần nó:
$urlParts = null;
preg_match_all("~[\?&]([^&]+)=([^&]+)~", $url, $urlParts);
chỉ vì tò mò, nhưng làm sao hệ thống của bạn không hỗ trợ chức năng PHP gốc? – Vallentin
@Vallentin - 'parse_str()' đã được giới thiệu trong PHP 4 ... có thể (nhưng nó là nhiều improbabile) ông đã có một phiên bản trước của PHP –
tên máy là không bắt buộc nhưng cần ít nhất là dấu hỏi tại bắt đầu của chuỗi tham số:
$inputString = '?test=123&random=abc&usersList[]=1&usersList[]=2' ;
parse_str (parse_url ($inputString , PHP_URL_QUERY) , $params);
print_r ($params);
- 1. Trích xuất URL từ chuỗi
- 2. Trích xuất một tham số từ một URL trong WordPress
- 3. Làm thế nào để bạn trích xuất một giá trị số từ một chuỗi trong một truy vấn MySQL?
- 4. Làm cách nào để gửi URL có Chuỗi truy vấn dưới dạng Chuỗi truy vấn
- 5. Cách trích xuất URL từ văn bản
- 6. Mã Ruby để trích xuất máy chủ từ chuỗi URL
- 7. Làm thế nào để đọc các tham số chuỗi truy vấn của một URL thô ASP.NET?
- 8. Làm cách nào để bạn trích xuất url từ chuỗi bằng python?
- 9. Làm cách nào để truy xuất toàn bộ URL bằng các tham số?
- 10. Truy cập chuỗi/tham số truy vấn từ trang html
- 11. Remove chuỗi truy vấn thông số từ url với regex
- 12. Cách đọc giá trị tham số truy vấn từ URL bằng lệnh perl
- 13. php để trích xuất một chuỗi từ dấu nháy kép
- 14. Cách chuyển% trong chuỗi truy vấn URL?
- 15. Làm cách nào để trích xuất miền ra khỏi URL?
- 16. Sử dụng regex để trích xuất nhiều số từ chuỗi
- 17. Cách trích xuất một số động từ một chuỗi
- 18. jquery get chuỗi truy vấn từ URL
- 19. Làm thế nào để trích xuất một số từ một chuỗi trong Perl?
- 20. Tôi làm cách nào để truy xuất chi tiết video YouTube từ URL video bằng PHP?
- 21. Truy vấn MySQL để trích xuất từ đầu tiên từ một trường
- 22. Làm cách nào để truy xuất chuỗi lỗi từ WSAGetLastError()?
- 23. Làm cách nào để định tuyến URL bằng chuỗi truy vấn trong ASP.NET MVC?
- 24. Trích xuất từ đầu tiên của chuỗi trong truy vấn SQL Server
- 25. Trích xuất X số từ xung quanh chuỗi tìm kiếm đã cho trong một chuỗi
- 26. Làm cách nào để trích xuất URL và văn bản liên kết từ HTML trong Perl?
- 27. Trích xuất số tiền đô la từ chuỗi - regex trong PHP
- 28. mã hóa tham số chuỗi truy vấn trong IE10
- 29. Làm cách nào để giữ lại thông số truy vấn trong URL phân trang trong ZF2?
- 30. Chuỗi truy vấn phân tích bằng HTTPclient để trích xuất nameValuePairs
thể trùng lặp của [biểu thức thông thường để phân tích chuỗi truy vấn] (http://stackoverflow.com/questions/4499538/regular-expression-to-parse-query-string) – Gordon
Thật vậy, một bản sao, tuy nhiên các giải pháp parse_url dẫn đến một vấn đề mới, nhìn vào bình luận của tôi để user576875 dưới đây. –
bạn có thể trích xuất chuỗi bắt đầu từ '?' Với 'strstr' hoặc' phát nổ' một cái gì đó và sau đó chuyển nó tới 'parse_str' – Gordon