Antworten:
Sie möchten die parse_str
Funktion und müssen den zweiten Parameter festlegen, damit die Daten in ein Array anstatt in einzelne Variablen eingefügt werden.
$get_string = "pg_id=2&parent_id=2&document&video";
parse_str($get_string, $get_array);
print_r($get_array);
?key=lorem&key=ipsum
als hätten Sie nur angegeben, key=ipsum
wenn dies die Abfragezeichenfolge in der URL wäre. Und ich denke, es wird als ungültig angesehen, den Schlüssel wiederzuverwenden und konsistente Ergebnisse zu erwarten, oder dass alle Instanzen des Schlüssels beibehalten werden. Der gültige Ansatz, zumindest für eine Abfrage - String zu PHP gesendet, wäre ?key[]=lorem&key[]=ipsum
, so dass Ihr homegrown Ansatz für alle Vorkommen von aussehen könnte , &{x}=
wo x mehr als einmal vorkommt und ersetzen x[]
(und die Behandlung genauso wie &)
?key[]=lorem&key[]=ipsum
einigen Wochen dazu entschlossen . Aber danke, dass du den Link geteilt hast!
Manchmal ist parse_str()
allein die Note genau, sie könnte zum Beispiel Folgendes anzeigen:
$url = "somepage?id=123&lang=gr&size=300";
parse_str () würde zurückgeben:
Array (
[somepage?id] => 123
[lang] => gr
[size] => 300
)
Es wäre besser, parse_str()
mit parse_url()
so etwas zu kombinieren :
$url = "somepage?id=123&lang=gr&size=300";
parse_str( parse_url( $url, PHP_URL_QUERY), $array );
print_r( $array );
$_SERVER['QUERY_STRING']
Verwenden von parse_str()
.
$str = 'pg_id=2&parent_id=2&document&video';
parse_str($str, $arr);
print_r($arr);
Verwenden Sie http://us1.php.net/parse_str
Achtung, es wird verwendet:
parse_str($str, &$array);
nicht
$array = parse_str($str);
Wenn Sie Probleme haben, eine Abfragezeichenfolge aufgrund von codiertem kaufmännischem Und in ein Array zu konvertieren
&
dann unbedingt verwenden html_entity_decode
Beispiel:
// 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' =>
)
Es gibt mehrere mögliche Methoden, aber für Sie gibt es bereits eine integrierte parse_str
Funktion
$array = array();
parse_str($string, $array);
var_dump($array);
Dies ist der PHP-Code zum Teilen der Abfrage in MySQL und 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;
}
Beispiel:
wähle xx aus xx wähle xx, (wähle xx) aus xx wobei y = 'cc' wähle xx aus xx linker Join (wähle xx) wobei (wähle oben 1 xxx aus xxx) oder mit xxx desc ";
wähle xx aus xx
wähle xx, (wähle xx) aus xx wobei y = 'cc'
Wählen Sie xx aus xx links verbinden (wählen Sie xx), wobei (wählen Sie oben 1 xxx aus xxx) oder durch xxx absteigend
Vielen Dank aus Indonesien Sentrapedagang.com
Für diese spezielle Frage ist die gewählte Antwort korrekt. Wenn die URL jedoch einen redundanten Parameter wie ein zusätzliches "e" enthält, schlägt die Funktion stillschweigend fehl, ohne dass ein Fehler oder eine Ausnahme ausgelöst wird:
a=2&b=2&c=5&d=4&e=1&e=2&e=3
Deshalb bevorzuge ich es, meinen eigenen Parser wie folgt zu verwenden:
//$_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" }
Jetzt haben Sie alle Vorkommen jedes Parameters in einem eigenen Array. Sie können sie jederzeit zu einem Array zusammenführen, wenn Sie möchten.
Hoffentlich hilft das!
?key=lorem&key=ipsum
wird in Folgearray(["key"]=>"ipsum")
die Frage ist, gibt es eine Funktion s.th. zu erhalten soarray(["key"]=>array("lorem", "ipsum"))
oder muss ich diese Funktion selbst erstellen?