2011-11-02 17 views
5

que tienen la siguiente URL:
http://sub.mysite.com/store/?store=Fine+Ting&storeid=3726&test1=value1&test2=value2¿por qué parse_url devuelve el fragmento?

Usando print_r(parse_url($url)) me da esto:

Array ( 
    [scheme] => http 
    [host] => sub.mysite.com 
    [path] => /store/ 
    [query] => store=Fine+Ting& 
    [fragment] => 038;storeid=3726&test1=value1&test2=value2 
) 

De acuerdo con la documentation que sólo debe tener fragment después de la hashmark #.

¿Por qué entonces es parse_url returning fragment? ¿No debería ser eso en [query]?

+1

No consigo un elemento 'fragment' cuando uso su ejemplo:' var_dump (parse_url ("http://sub.mysite.com/store/?store=Fine+Ting&storeid=3726&test1=value1&test2=value2")); '. Ejecutando php5.3.5 –

+0

yo tampoco ...: s – samura

+0

Funciona aquí también. Quizás tengas un problema de codificación. Con el hashmark veo un '# 038;' allí, que no puedo ver en ninguna parte de su url – KingCrunch

Respuesta

9

Tiene un problema con su url, el signo ampersand está codificado en htmlentities (&). Por lo tanto, parse_str piensa, el fragmento está comenzando allí.

Intente utilizar html_entity_decode antes de pasar la url a parse_url.

+0

¡Buena captura! Ya me preguntaba de dónde viene el '038'. – Lekensteyn

+0

Puedes estar en algo. Entonces, ¿cómo puedo resolver eso? – Steven

+0

¿De dónde obtienes la URL? ¿Estás haciendo algún procesamiento? – mAu

Cuestiones relacionadas