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

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

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-

'[email protected]',
                        array("php","mysql"),
                        'age'=>28);
echo "next page";
?>

[wpdm_file id=103]

Làm thế nào nó hoạt động
Lấy các phần tử của mảng, hàm http_build_query() tạo chuỗi mã hóa URL tương đương của chúng. Khi bạn chạy tập lệnh và đưa chuột qua liên kết “trang tiếp theo”, bạn sẽ thấy chuỗi được mã hóa giống như thế này-

Bước 2. Cách nhận mảng từ URL
trong trang2. php, để truy xuất các giá trị, hãy sử dụng các khóa mảng theo cách sau-

";
echo $_GET[0][0]; echo "
"; echo $_GET[0][1]; echo "
"; echo $_GET['age']; echo "
"; ?>

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-

'[email protected]',
                        array("php","mysql"),
                        'age'=>28);
echo "next page";
?>

[wpdm_file id=104]

Làm thế nào nó hoạt động
trước tiên, hàm serialize() chuyển đổi mảng thành chuỗi luồng byte và hàm urlencode() chuyển đổi chuỗi đó thành chuỗi được mã hóa URL. Khi bạn chạy tập lệnh và đưa chuột qua liên kết “trang tiếp theo”, bạn sẽ thấy chuỗi được mã hóa giống như thế này-

http. //localhost/…/trang 2. php?str=a%3A3%3A%7Bs%3A5%3A%22email%22%3Bs%3A13%3A%22test%40test. com%22%3Bi%3A0%3Ba%3A2%3A%7Bi%3A0%3Bs%3A3%3A%22php%22%3Bi%3A1%3Bs%3A5%3A%22mysql%22%3B%7Ds%3A3%3A%

Làm cách nào để chuyển một mảng trong URL trong PHP?

Để truyền một mảng dưới dạng tham số URL, bạn có thể sử dụng hàm có sẵn của php http_build_query() . http_build_query() trả về cho bạn chuỗi truy vấn được mã hóa URL.

Làm cách nào để lấy dữ liệu từ URL trong PHP?

PHP $_GET là một biến siêu toàn cầu PHP được sử dụng để thu thập dữ liệu biểu mẫu sau khi gửi biểu mẫu HTML với method="get". $_GET cũng có thể thu thập dữ liệu được gửi trong URL. Khi người dùng nhấp vào liên kết "Test $GET", các thông số "subject" và "web" được gửi đến "test_get

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); .

Làm cách nào để lưu trữ URL trong biến trong PHP?

Tạo một biến PHP sẽ lưu trữ URL ở định dạng chuỗi . Kiểm tra xem máy chủ có bật HTTPS không. Nếu có, hãy thêm “https” vào chuỗi URL. Nếu HTTPS không được bật, hãy thêm “http” vào chuỗi URL.