Mảng trong url 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

//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

http_build_query[] sẽ tạo một chuỗi truy vấn từ một mảng hoặc đối tượng. Các chuỗi này có thể được thêm vào một URL để tạo yêu cầu GET hoặc được sử dụng trong yêu cầu POST với ví dụ: cURL

$parameters = array[
    'parameter1' => 'foo',
    'parameter2' => 'bar',
];
$queryString = http_build_query[$parameters];

$queryString sẽ có giá trị như sau

parameter1=foo¶meter2=bar

http_build_query[] cũng sẽ hoạt động với mảng nhiều chiều

$parameters = array[
    "parameter3" => array[
        "sub1" => "foo",
        "sub2" => "bar",
    ],
    "parameter4" => "baz",
];
$queryString = http_build_query[$parameters];

$queryString sẽ có giá trị này

parameter3%5Bsub1%5D=foo¶meter3%5Bsub2%5D=bar¶meter4=baz

đó là phiên bản được mã hóa URL của

parameter3[sub1]=foo¶meter3[sub2]=bar¶meter4=baz

Bạn muốn chuyển một mảng từ trang này sang trang khác bằng URL làm tham số. Mảng có thể là mảng một chiều hoặc mảng nhiều chiều

Giải pháp

Để truyền mảng bằng URL, chúng ta phải tạo chuỗi truy vấn được mã hóa URL của mảng đó rồi truyền qua URL. Chúng ta có thể làm điều đó theo hai cách-

Phương pháp 1. Sử dụng hàm http_build_query[]

Bước 1. Chuẩn bị mảng để chuyển qua URL

Hàm http_build_query[] có thể chuyển đổi một mảng thành chuỗi truy vấn được mã hóa URL tương đương. Xem ví dụ sau-

Ghi chú. Bạn cũng có thể chuyển mảng kết hợp. Không chỉ mảng, bạn cũng có thể gửi chuỗi đơn giản theo cách tương tự

Phương pháp 2. Sử dụng các hàm serialize[] và urlencode[]

Bước 1. Chuẩn bị mảng để chuyển qua URL
Hàm urlencode[] cũng có thể được sử dụng để tạo chuỗi được mã hóa URL. Nhưng nó không thể chuyển đổi một mảng thành chuỗi được mã hóa URL. Vì vậy, lúc đầu, chúng tôi sẽ chuyển đổi mảng thành biểu diễn luồng byte của nó là một chuỗi bằng cách sử dụng hàm serialize[], sau đó chúng tôi sẽ tạo một chuỗi được mã hóa URL của luồng byte đó. Xem mã dưới đây-

Chủ Đề