Comment puis-je transformer une chaîne ci-dessous en un tableau ?
pg_id=2&parent_id=2&document&video
C'est le tableau que je recherche,
array(
'pg_id' => 2,
'parent_id' => 2,
'document' => ,
'video' =>
)
Vous voulez la parse_str
fonction et vous devez définir le deuxième paramètre pour que les données soient placées dans un tableau plutôt que dans des variables individuelles.
$get_string = "pg_id=2&parent_id=2&document&video";
parse_str($get_string, $get_array);
print_r($get_array);
?key=lorem&key=ipsum
,array(["key"]=>"ipsum")
la question est de savoir s'il existe une fonction pour obtenir le résultat. comme çaarray(["key"]=>array("lorem", "ipsum"))
ou dois-je créer cette fonction moi-même??key=lorem&key=ipsum
comme si vous ne fournissiezkey=ipsum
que si c'était la chaîne de requête sur l'URL. Et je pense qu'il est considéré comme invalide de réutiliser la clé et d'attendre des résultats cohérents ou que toutes les instances de la clé soient conservées. L'approche valide, au moins pour une chaîne de requête envoyée à PHP, serait?key[]=lorem&key[]=ipsum
, donc votre approche locale pourrait rechercher toutes les occurrences&{x}=
où x se produit plus d'une fois et remplacer parx[]
(et traiter? Comme identique à &)?key[]=lorem&key[]=ipsum
quelques semaines. Mais merci de partager le lien!Parfois
parse_str()
seul la note est précise, elle pourrait afficher par exemple:$url = "somepage?id=123&lang=gr&size=300";
parse_str () renverrait:
Array ( [somepage?id] => 123 [lang] => gr [size] => 300 )
Il serait préférable de combiner
parse_str()
avecparse_url()
comme ça:$url = "somepage?id=123&lang=gr&size=300"; parse_str( parse_url( $url, PHP_URL_QUERY), $array ); print_r( $array );
la source
$_SERVER['QUERY_STRING']
Utilisation
parse_str()
.$str = 'pg_id=2&parent_id=2&document&video'; parse_str($str, $arr); print_r($arr);
la source
Utilisez http://us1.php.net/parse_str
Attention, son utilisation est:
ne pas
la source
parse_str($str,&$arr);
terrible erreurSi vous rencontrez un problème pour convertir une chaîne de requête en tableau en raison de l'esperluette codée
alors assurez-vous d'utiliser
html_entity_decode
Exemple:
// 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' => )
la source
Il existe plusieurs méthodes possibles, mais pour vous, il existe déjà une fonction intégrée
parse_str
$array = array(); parse_str($string, $array); var_dump($array);
la source
Ceci est une ligne pour analyser la requête de l'URL actuelle dans le tableau:
parse_str($_SERVER['QUERY_STRING'], $query);
la source
Vous pouvez utiliser la fonction de chaîne PHP
parse_str()
suivie deforeach
boucle.$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);
la source
Ceci est le code PHP pour diviser la requête dans 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; }
Exemple:
Requête avant
sélectionnez xx à partir de xx sélectionnez xx, (sélectionnez xx) à partir de xx où y = 'cc' sélectionnez xx à partir de xx jointure gauche (sélectionnez xx) où (sélectionnez le premier xxx de xxx) oder par xxx desc ";
Requête après
sélectionnez xx à partir de xx
sélectionnez xx, (sélectionnez xx) à partir de xx où y = 'cc'
sélectionnez xx à partir de xx jointure gauche (sélectionnez xx) où (sélectionnez top 1 xxx à partir de xxx) ou par xxx desc
Merci, d'Indonésie Sentrapedagang.com
la source
Pour cette question spécifique, la réponse choisie est correcte mais s'il y a un paramètre redondant - comme un "e" supplémentaire - dans l'URL, la fonction échouera silencieusement sans qu'une erreur ou une exception ne soit émise:
a=2&b=2&c=5&d=4&e=1&e=2&e=3
Je préfère donc utiliser mon propre analyseur comme ceci:
//$_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" }
Maintenant que vous avez toutes les occurrences de chaque paramètre dans son propre tableau, vous pouvez toujours les fusionner en un seul tableau si vous le souhaitez.
J'espère que ça t'as aidé!
la source