Làm cách nào để phân tích các tham số URL trong PHP?

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

http://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ố 8

Theo 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 = "https://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

Làm cách nào để phân tích một URL trong PHP?

Hàm parse_url() là một hàm có sẵn trong PHP được sử dụng để trả về các thành phần của URL bằng cách phân tích cú pháp URL đó. .
Nó trả về một mảng kết hợp nếu tham số thành phần bị bỏ qua
Nó trả về một chuỗi nếu tham số thành phần được chỉ định
Nó trả về false, nếu tham số là URL không đúng định dạng

Làm cách nào để thêm tham số truy vấn vào URL trong PHP?

Cách đáng tin cậy để thêm một tham số GET cụ thể là gì? . echo http_build_url($url, array("query" => "the=query&parts=here"), HTTP_URL_JOIN_QUERY);. .
cũng đừng quên nối thêm giá trị của danh mục. .
@DougT. .
Cách tiếp cận này tốt khi bạn biết rằng tham số 'danh mục' chưa có trong URL

$_ server [' Query_string '] trong PHP là gì?

thì $_SERVER['QUERY_STRING'] giúp bạn xác định phần của chuỗi sau dấu ? và theo câu hỏi của bạn $Q =

Làm cách nào để lấy tên miền từ URL trong PHP?

Tất cả mã PHP được nhóm lại với nhau trong hàm getDomain() . Thông số $url phải được chuyển đến hàm getDomain(), từ đó bạn muốn lấy tên miền. Hàm getDomain() trả về tên miền nếu tìm thấy và FALSE nếu không tìm thấy.