Tôi đang tìm tên của hàm PHP để xây dựng chuỗi truy vấn từ một mảng các cặp giá trị khóa. Xin lưu ý, tôi đang tìm kiếm hàm PHP tích hợp để thực hiện việc này, không phải là một homebrew (đó là tất cả một tìm kiếm google dường như trở lại). Có một cái, tôi không thể nhớ tên của nó hoặc tìm thấy nó trên php.net.
IIRC tên của nó không phải là trực quan. 150 hữu ích
0 bình luận 132k xem chia sẻ answer 283 Bạn đang tìm kiếm http_build_query() .
283 hữu ích 4 bình luận chia sẻ answer 22 Đây là một cách thực hiện thân thiện với php4 đơn giản: /**
* Builds an http query string.
* @param array $query // of key value pairs to be used in the query
* @return string // http query string.
**/
function build_http_query( $query ){
$query_array = array();
foreach( $query as $key => $key_value ){
$query_array[] = urlencode( $key ) . '=' . urlencode( $key_value );
}
return implode( '&', $query_array );
}
22 hữu ích 3 bình luận chia sẻ answer 3 Cũng như thêm vào @thatjuan câu trả lời. Phiên bản PHP4 tương thích hơn của điều này: if (!function_exists('http_build_query')) {
if (!defined('PHP_QUERY_RFC1738')) {
define('PHP_QUERY_RFC1738', 1);
}
if (!defined('PHP_QUERY_RFC3986')) {
define('PHP_QUERY_RFC3986', 2);
}
function http_build_query($query_data, $numeric_prefix = '', $arg_separator = '&', $enc_type = PHP_QUERY_RFC1738)
{
$data = array();
foreach ($query_data as $key => $value) {
if (is_numeric($key)) {
$key = $numeric_prefix . $key;
}
if (is_scalar($value)) {
$k = $enc_type == PHP_QUERY_RFC3986 ? urlencode($key) : rawurlencode($key);
$v = $enc_type == PHP_QUERY_RFC3986 ? urlencode($value) : rawurlencode($value);
$data[] = "$k=$v";
} else {
foreach ($value as $sub_k => $val) {
$k = "$key[$sub_k]";
$k = $enc_type == PHP_QUERY_RFC3986 ? urlencode($k) : rawurlencode($k);
$v = $enc_type == PHP_QUERY_RFC3986 ? urlencode($val) : rawurlencode($val);
$data[] = "$k=$v";
}
}
}
return implode($arg_separator, $data);
}
}
3 hữu ích 0 bình luận chia sẻ answer 0 nhưng để đảo ngược công việc này, bạn có thể sử dụng: void parse_str(str $input, array $output);
//for example:
$str = "first=value&arr[]=foo+bar&arr[]=baz";
parse_str($str);
echo $first; // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz
parse_str($str, $output);
echo $output['first']; // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz
Chúc may mắn. 0 hữu ích 0 bình luận chia sẻ answer 0 Vì câu hỏi này khá cũ và đối với PHP, đây là một cách để làm điều đó trong khung công tác PHP (hiện tại) rất phổ biến. Để mã hóa chuỗi truy vấn cho một đường dẫn trong ứng dụng của bạn, hãy
đặt tên cho tuyến đường của bạn và sau đó sử dụng route() hàm trợ
giúp như sau: route('documents.list.', ['foo' => 'bar']);
Kết quả sẽ trông giống như: http://localhost/documents/list?foo=bar
Ngoài ra, hãy lưu ý rằng nếu tuyến đường của bạn có bất kỳ tham số phân đoạn đường dẫn nào /documents/{id} , ví dụ , hãy đảm bảo bạn cũng chuyển một id đối số cho các route() tham số, nếu không, nó sẽ mặc định sử dụng giá trị của tham số đầu
tiên. 0 hữu ích 0 bình luận chia sẻ answer 1 Implode sẽ kết hợp một mảng thành một chuỗi cho bạn, nhưng để tạo một truy vấn SQL ra một cặp kay / value bạn sẽ phải viết hàm riêng của mình.
1 hữu ích 2 bình luận chia sẻ Đăng nhập để trả lời câu hỏiCó thể bạn quan tâm
|