2008-12-30 15 views
133

मैं कुंजी मान जोड़े की सरणी से क्वेरी स्ट्रिंग बनाने के लिए PHP फ़ंक्शन का नाम ढूंढ रहा हूं। कृपया ध्यान दें, मैं को PHP फ़ंक्शन में निर्मित करने के लिए देख रहा हूं, ऐसा करने के लिए होमब्री नहीं (यह सब एक Google खोज वापस आती है)। एक है, मैं बस इसका नाम याद नहीं कर सकता या इसे php.net पर नहीं ढूंढ सकता। आईआईआरसी इसका नाम सहज नहीं है।PHP फ़ंक्शन सरणी से क्वेरी स्ट्रिंग बनाने के लिए

उत्तर

255

आप http_build_query() के लिए देख रहे हैं।

/** 
* 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); 

} 
+3

हाँ, वह वही है। –

+2

इच्छा है कि मैं उस समारोह के बारे में बहुत समय पहले जानूंगा। हे। – ceejayoz

+0

मैं इसे कभी भी याद नहीं कर सकता। – Rimian

0

Implode आप के लिए एक स्ट्रिंग में एक सरणी गठबंधन होगा, लेकिन एक SQL क्वेरी बाहर एक Kay/मान युग्म आप 'बनाने के लिए है आपको अपना काम लिखना होगा।

+0

कि कोशिश की, लेकिन यह काम नहीं करेगा। मैं एक http क्वेरी स्ट्रिंग बनाने की कोशिश कर रहा हूं जिसके लिए सरणी से दोनों कुंजी और मानों की आवश्यकता होती है, implode यह नहीं कर सकता है। –

+2

मैं देखता हूं, यह सुनिश्चित नहीं था कि क्या आपका मतलब SQL क्वेरी स्ट्रिंग या http क्वेरी स्ट्रिंग है। –

22

यहाँ एक सरल php4 के अनुकूल कार्यान्वयन है।

+0

मुझे लगता है कि आपको स्वीकृत उत्तर नहीं मिला? –

+29

यह एक php4 संस्करण है। – SuitedSloth

+1

अपने डिकोडिंग करते समय, PHP कुंजी-डीकोड भी दिखाई देता है। संभवतः यहां ऐसा करने लायक है? – cloudfeet

0

लेकिन उलटा इस काम के लिए, आप उपयोग कर सकते हैं:

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 

गुड लक

2

बस @thatjuan के उत्तर के अतिरिक्त।
इस के अधिक संगत PHP4 के संस्करण:

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); 
    } 
} 
संबंधित मुद्दे