Yanıtlar:
parse_str
İşlevi istiyorsunuz ve verilerin bağımsız değişkenler yerine bir diziye yerleştirilmesi için ikinci parametreyi ayarlamanız gerekir.
$get_string = "pg_id=2&parent_id=2&document&video";
parse_str($get_string, $get_array);
print_r($get_array);
?key=lorem&key=ipsum
yalnızca key=ipsum
URL'deki sorgu dizesi olsaydı, size verilmiş gibi davranır . Ve anahtarı yeniden kullanmanın ve tutarlı sonuçlar beklemenin veya anahtarın tüm örneklerinin korunmasının geçersiz olduğunu düşünüyorum. En azından PHP'ye gönderilen bir sorgu dizesi için geçerli yaklaşım, ?key[]=lorem&key[]=ipsum
bu nedenle, kendi yetiştirdiğiniz yaklaşımınız &{x}=
x'in birden fazla oluştuğu ve yerine x[]
(ve? İle aynı şekilde davranıyorsa) yerine geçebilecek herhangi bir örneği arayabilir
?key[]=lorem&key[]=ipsum
Birkaç hafta önce böyle yapmaya karar verdim . Ancak bağlantıyı paylaştığınız için teşekkürler!
Bazen parse_str()
tek başına not doğrudur, örneğin görüntülenebilir:
$url = "somepage?id=123&lang=gr&size=300";
parse_str () şunu döndürür:
Array (
[somepage?id] => 123
[lang] => gr
[size] => 300
)
Birleştirmek daha iyi olurdu parse_str()
ile parse_url()
şöyle:
$url = "somepage?id=123&lang=gr&size=300";
parse_str( parse_url( $url, PHP_URL_QUERY), $array );
print_r( $array );
$_SERVER['QUERY_STRING']
Kullanma parse_str()
.
$str = 'pg_id=2&parent_id=2&document&video';
parse_str($str, $arr);
print_r($arr);
Http://us1.php.net/parse_str kullanın
Dikkat, kullanımı:
parse_str($str, &$array);
değil
$array = parse_str($str);
Kodlanmış ve işaretleri nedeniyle bir sorgu dizesini diziye dönüştürürken sorun yaşıyorsanız
&
o zaman kullandığınızdan emin olun html_entity_decode
Misal:
// 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' =>
)
Birkaç olası yöntem vardır, ancak sizin için zaten yerleşik bir parse_str
işlev var
$array = array();
parse_str($string, $array);
var_dump($array);
Bu mysql & mssql sorgu bölmek için PHP kodu
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;
}
Misal:
xx'ten xx'i seçin xx'i seçin, (xx'i seçin) xx'ten y = 'cc' xx sol birleşiminden xx'i seçin (xx'i seçin) burada (xxx'ten ilk 1 xxx'i seçin veya xxx desc'e göre);
xx'ten xx seçin
xx'i seçin, (xx'i seçin) xx'ten y = 'cc'
xx sol birleşimden xx seçin (xx seçin) (burada xxx'ten ilk 1 xxx seçin) veya xxx desc tarafından
Endonezya Sentrapedagang.com'dan teşekkür ederim
Bu özel soru için seçilen cevap doğrudur, ancak URL'de fazladan bir "e" gibi bir yedek parametre varsa, işlev bir hata veya istisna atılmadan sessizce başarısız olur:
a=2&b=2&c=5&d=4&e=1&e=2&e=3
Bu yüzden kendi ayrıştırıcımı şöyle kullanmayı tercih ederim:
//$_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" }
Şimdi her parametrenin kendi dizisindeki tüm oluşumlarına sahipsiniz, isterseniz bunları her zaman tek bir dizide birleştirebilirsiniz.
Umarım yardımcı olur!
?key=lorem&key=ipsum
sonuç şu olacaktırarray(["key"]=>"ipsum")
, s.th. almak için bir işlevi var mı böylearray(["key"]=>array("lorem", "ipsum"))
mi yoksa bu işlevi kendi başıma mı oluşturmak zorundayım?