keys - PHP url a la matriz
php rename array key (6)
Con parse_url()
puede analizar la URL a una matriz asociativa. En la matriz de resultados se obtiene, entre otros, la parte de consulta. Luego puede usar parse_str para analizar la parte de la consulta a su nueva matriz.
Tengo estas direcciones URL de un registro web :
http://www.domain.com/page?s=194&client=151678&m=a4a&v=1&g=54
http://www.domain.com/page?s=51&client=617171&m=b4z&v=8&g=97
¿Cómo puedo convertir esta URL en una matriz en PHP? Tendré una matriz como esta
array(
''page'' => array(
''s'' => 194,
''client'' => 151678
''m'' => ''a4a'',
''v'' => 1,
''g'' => 54
)
etc..
)
luego, más tarde, puedo hacer un bucle a esa matriz para encontrar duplicados o validar la información correctamente.
PHP tiene una función nativa para eso, la función parse_str . Puedes usarlo como:
parse_str($_SERVER[''QUERY_STRING''], $outputArray);
Esto hará justo lo que necesitas.
Podrías hacerlo:
function convertUrlToArray($url){
$url = str_replace("http://www.domain.com/page?", "", $url);
$urlExploded = explode("&", $url);
$return = array();
foreach ($urlExploded as $param){
$explodedPar = explode("=", $param);
$return[$explodedPar[0]] = $explodedPar[1];
}
return $return;
}
$url1 = convertUrlToArray("http://www.domain.com/page?s=51&client=617171&m=b4z&v=8&g=97");
var_dump($url1);
ejemplo aquí http://codepad.org/KIDKPzaU
Puede haber una mejor manera de hacer esto, pero esto es lo que se me ocurrió.
<?php
$url = ''http://www.domain.com/page?s=194&client=151678&m=a4a&v=1&g=54'';
$remove_http = str_replace(''http://'', '''', $url);
$split_url = explode(''?'', $remove_http);
$get_page_name = explode(''/'', $split_url[0]);
$page_name = $get_page_name[1];
$split_parameters = explode(''&'', $split_url[1]);
for($i = 0; $i < count($split_parameters); $i++) {
$final_split = explode(''='', $split_parameters[$i]);
$split_complete[$page_name][$final_split[0]] = $final_split[1];
}
var_dump($split_complete);
?>
Suponiendo que, en su pregunta, la ruta siempre será /page
, la matriz que contiene las URL analizadas no puede tener índices de múltiples page
por lo que debe usar índices numéricos.
Prueba esto:
$urls_parsed = array();
foreach ($url_strings as $url_string) {
$url = parse_url($url_string);
$urls_parsed[] = parse_str($url[''query'']);
}
$url_strings
es una matriz que contiene todas las URL que desea analizar en formato de cadena. $urls_parsed
es la matriz resultante que contiene las URL analizadas en el formato que usted solicitó.
Usa la función parse_url como
<?php
$url = ''http://username:password@hostname/path?arg=value#anchor'';
print_r(parse_url($url));
echo parse_url($url, PHP_URL_PATH);
?>
Lo que le dará la siguiente salida de matriz
Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)
Y a partir de la consulta, puede dividirlo fácilmente como (clave, valor) paira. Espero que esto ayude.:)