쿼리 문자열을 배열로 구문 분석
아래 문자열을 배열 로 바꾸려면 어떻게 해야합니까?
pg_id=2&parent_id=2&document&video
이것은 내가 찾고있는 배열입니다.
array(
'pg_id' => 2,
'parent_id' => 2,
'document' => ,
'video' =>
)
parse_str
함수를 원하고 개별 변수 대신 배열에 데이터를 넣도록 두 번째 매개 변수를 설정해야합니다.
$get_string = "pg_id=2&parent_id=2&document&video";
parse_str($get_string, $get_array);
print_r($get_array);
때로는 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 );
사용 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' =>
)
There are several possible methods, but for you, there is already a builtin parse_str
function
$array = array();
parse_str($string, $array);
var_dump($array);
This is one-liner for parsing query from current URL into array:
parse_str($_SERVER['QUERY_STRING'], $query);
You can use the PHP string function parse_str()
followed by foreach
loop.
$str="pg_id=2&parent_id=2&document&video";
parse_str($str,$my_arr);
foreach($my_arr as $key=>$value){
echo "$key => $value<br>";
}
print_r($my_arr);
This is the PHP code to split query in 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;
}
Example:
Query before
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 ";
Query after
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
Thank you, from Indonesia Sentrapedagang.com
For this specific question the chosen answer is correct but if there is a redundant parameter—like an extra "e"—in the URL the function will silently fail without an error or exception being thrown:
a=2&b=2&c=5&d=4&e=1&e=2&e=3
So I prefer using my own parser like so:
//$_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" }
Now you have all the occurrences of each parameter in its own array, you can always merge them into one array if you want to.
Hope that helps!
참고URL : https://stackoverflow.com/questions/5397726/parse-query-string-into-an-array
'IT' 카테고리의 다른 글
WPF 사용자 컨트롤 부모 (0) | 2020.05.19 |
---|---|
Python을 사용하여 CSV 파일을 편집 할 때 헤더를 건너 뜁니다 (0) | 2020.05.19 |
MySQL의 높은 CPU 사용률 (0) | 2020.05.19 |
스크립트가 소스인지 감지하는 방법 (0) | 2020.05.19 |
의사 요소에서 SVG를 내용으로 사용하는 방법이 있습니까 : before 또는 : after (0) | 2020.05.19 |