Jawaban:
Anda menginginkan parse_str
fungsi tersebut, dan Anda perlu mengatur parameter kedua agar data dimasukkan ke dalam array alih-alih menjadi variabel individual.
$get_string = "pg_id=2&parent_id=2&document&video";
parse_str($get_string, $get_array);
print_r($get_array);
?key=lorem&key=ipsum
seolah-olah Anda hanya menyediakan key=ipsum
jika itu adalah string kueri pada URL. Dan saya pikir itu dianggap tidak sah untuk menggunakan kembali kunci dan mengharapkan hasil yang konsisten atau bahwa semua contoh kunci dipertahankan. Pendekatan yang valid, setidaknya untuk string kueri yang dikirim ke PHP, adalah ?key[]=lorem&key[]=ipsum
, jadi pendekatan asal Anda mungkin mencari kejadian di &{x}=
mana x muncul lebih dari sekali dan ganti dengan x[]
(dan memperlakukan? Sama seperti &)
?key[]=lorem&key[]=ipsum
beberapa minggu yang lalu. Tetapi terima kasih telah berbagi tautan!
Kadang-kadang parse_str()
saja catatan akurat, dapat ditampilkan misalnya:
$url = "somepage?id=123&lang=gr&size=300";
parse_str () akan mengembalikan:
Array (
[somepage?id] => 123
[lang] => gr
[size] => 300
)
Akan lebih baik untuk digabungkan parse_str()
dengan parse_url()
seperti:
$url = "somepage?id=123&lang=gr&size=300";
parse_str( parse_url( $url, PHP_URL_QUERY), $array );
print_r( $array );
$_SERVER['QUERY_STRING']
Menggunakan parse_str()
.
$str = 'pg_id=2&parent_id=2&document&video';
parse_str($str, $arr);
print_r($arr);
Gunakan http://us1.php.net/parse_str
Perhatian, penggunaannya adalah:
parse_str($str, &$array);
tidak
$array = parse_str($str);
Jika Anda mengalami masalah dalam mengonversi string kueri ke array karena ampersand yang disandikan
&
maka pastikan untuk menggunakan html_entity_decode
Contoh:
// Input string //
$input = 'pg_id=2&parent_id=2&document&video';
// Parse //
parse_str(html_entity_decode($input), $out);
// Output of $out //
array(
'pg_id' => 2,
'parent_id' => 2,
'document' => ,
'video' =>
)
Ini adalah kode PHP untuk membagi kueri di mysql & mssql
enter code here
function splitquery($strquery)
{
$arrquery=explode('select',$strquery);
$stry='';$strx='';
for($i=0;$i<count($arrquery);$i++)
{
if($i==1)
{
echo 'select '.trim($arrquery[$i]);
}
elseif($i>1)
{
$strx=trim($arrquery[($i-1)]);
if(trim(substr($strx,-1))!='(')
{
$stry=$stry.'
select '.trim($arrquery[$i]);
}
else
{
$stry=$stry.trim('select '.trim($arrquery[$i]));
}
$strx='';
}
}
return $stry;
}
Contoh:
pilih xx dari xx pilih xx, (pilih xx) dari xx mana y = 'cc' pilih xx dari xx gabung kiri (pilih xx) di mana (pilih top 1 xxx dari xxx) oder by xxx desc ";
pilih xx dari xx
pilih xx, (pilih xx) dari xx di mana y = 'cc'
pilih xx dari xx gabung kiri (pilih xx) di mana (pilih top 1 xxx dari xxx) atau oleh xxx desc
Terima kasih, dari Indonesia Sentrapedagang.com
Untuk pertanyaan spesifik ini, jawaban yang dipilih benar, tetapi jika ada parameter yang berlebihan — seperti "e" tambahan — di URL, fungsi akan secara diam-diam gagal tanpa kesalahan atau pengecualian dilemparkan:
a=2&b=2&c=5&d=4&e=1&e=2&e=3
Jadi saya lebih suka menggunakan parser sendiri seperti:
//$_SERVER['QUERY_STRING'] = `a=2&b=2&c=5&d=4&e=100&e=200&e=300`
$url_qry_str = explode('&', $_SERVER['QUERY_STRING']);
//arrays that will hold the values from the url
$a_arr = $b_arr = $c_arr = $d_arr = $e_arr = array();
foreach( $url_qry_str as $param )
{
$var = explode('=', $param, 2);
if($var[0]=="a") $a_arr[]=$var[1];
if($var[0]=="b") $b_arr[]=$var[1];
if($var[0]=="c") $c_arr[]=$var[1];
if($var[0]=="d") $d_arr[]=$var[1];
if($var[0]=="e") $e_arr[]=$var[1];
}
var_dump($e_arr);
// will return :
//array(3) { [0]=> string(1) "100" [1]=> string(1) "200" [2]=> string(1) "300" }
Sekarang Anda memiliki semua kemunculan setiap parameter dalam lariknya sendiri, Anda selalu dapat menggabungkannya menjadi satu larik jika Anda mau.
Semoga itu bisa membantu!
?key=lorem&key=ipsum
akan menghasilkanarray(["key"]=>"ipsum")
Pertanyaannya adalah, apakah ada fungsi untuk mendapatkan s.th. suka iniarray(["key"]=>array("lorem", "ipsum"))
atau apakah saya harus membuat fungsi ini sendiri?