回答:
あなたは欲しいparse_str
機能を、あなたは配列内の代わりに、個々の変数に入れたデータを持っている二番目のパラメータを設定する必要があります。
$get_string = "pg_id=2&parent_id=2&document&video";
parse_str($get_string, $get_array);
print_r($get_array);
?key=lorem&key=ipsum
場合にのみ提供されたかのように扱いkey=ipsum
ます。また、キーを再利用して一貫した結果を期待すること、またはキーのすべてのインスタンスが保持されることは無効と見なされます。有効なアプローチは、少なくともPHPに送信されるクエリ文字列の場合はになる?key[]=lorem&key[]=ipsum
ため、&{x}=
xが複数回出現する箇所を検索して 置き換えx[]
ます(そして?を&と同じように処理します)
?key[]=lorem&key[]=ipsum
数週間前にこのようにすることにしました。しかし、リンクを共有してくれてありがとう!
場合によってparse_str()
は、それだけでノートが正確である場合があります。たとえば、
$url = "somepage?id=123&lang=gr&size=300";
parse_str()は次を返します:
Array (
[somepage?id] => 123
[lang] => gr
[size] => 300
)
これは、結合する方が良いだろうparse_str()
とparse_url()
そうのように:
$url = "somepage?id=123&lang=gr&size=300";
parse_str( parse_url( $url, PHP_URL_QUERY), $array );
print_r( $array );
$_SERVER['QUERY_STRING']
を使用しparse_str()
ます。
$str = 'pg_id=2&parent_id=2&document&video';
parse_str($str, $arr);
print_r($arr);
使用する http://us1.php.net/parse_strを
注意、それの使用法は次のとおりです。
parse_str($str, &$array);
ない
$array = parse_str($str);
エンコードされたアンパサンドが原因でクエリ文字列を配列に変換できない場合
&
次に必ず使用してください html_entity_decode
例:
// 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' =>
)
いくつかの可能な方法がありますが、あなたのために、すでに組み込みparse_str
関数があります
$array = array();
parse_str($string, $array);
var_dump($array);
これは、mysqlおよびmssqlでクエリを分割するPHPコードです
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;
}
例:
select xx from xx select xx、(select xx)from xx where y = 'cc' select xx from xx left join(select xx)where(select top 1 xxx from xxx)oder by xxx desc ";
xxからxxを選択
select xx、(select xx)from xx where y = 'cc'
xxからxxを選択します。左結合(select xx)を選択します。
インドネシアのSentrapedagang.comからありがとう
この特定の質問では、選択された答えは正しいですが、URLに余分な「e」などの冗長パラメーターがある場合、エラーや例外がスローされることなく、関数は警告なしに失敗します。
a=2&b=2&c=5&d=4&e=1&e=2&e=3
だから私は自分のパーサーを次のように使用することを好みます:
//$_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" }
これで、各パラメーターのすべてのオカレンスが独自の配列にあります。必要に応じて、それらを常に1つの配列にマージできます。
お役に立てば幸いです。
?key=lorem&key=ipsum
結果はarray(["key"]=>"ipsum")
s.thを取得する関数があります。このように、array(["key"]=>array("lorem", "ipsum"))
または自分でこの関数を作成する必要がありますか?