답변:
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;
}
예:
xx에서 xx를 선택하십시오. xx에서 xx를 선택하십시오 (xx에서 xx를 선택하십시오) 여기서 y = 'cc'xx에서 xx를 선택하십시오.
xx에서 xx를 선택하십시오
xx를 선택하고 xx에서 (xx를 선택) 여기서 y = 'cc'
xx 왼쪽 조인에서 xx 선택 (xx 선택) 여기서 xxx에서 상위 1 xxx를 선택하십시오.
감사합니다, 인도네시아 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" }
이제 각 배열의 모든 매개 변수가 자체 배열에 있으므로 원하는 경우 언제든지 하나의 배열로 병합 할 수 있습니다.
희망이 도움이됩니다!
?key=lorem&key=ipsum
발생합니다array(["key"]=>"ipsum")
질문은, s.th.를 얻을 수있는 기능이 있습니다 이 같은array(["key"]=>array("lorem", "ipsum"))
또는 내 자신 에이 기능을 만들어야합니까?