2011-11-02 10 views
5

Ho il seguente URL:
http://sub.mysite.com/store/?store=Fine+Ting&storeid=3726&test1=value1&test2=value2perché parse_url restituisce il frammento?

Utilizzando print_r(parse_url($url)) mi dà questo:

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

Secondo il documentation dovrei ottenere solo fragment dopo la hashmark #.

Perché quindi il frammento di ritorno è parse_url? Non dovrebbe essere in [query]?

+1

Non ho un elemento 'framment' quando utilizzo il tuo esempio:' var_dump (parse_url ("http://sub.mysite.com/store/?store=Fine+Ting&storeid=3726&test1=value1&test2=value2")); '. Esecuzione di php5.3.5 –

+0

neanche io ...: s – samura

+0

Funziona anche qui. Forse hai un problema di codifica. Con l'hashmark vedo un '# 038;' lì, che non riesco a vedere da nessuna parte nel tuo url – KingCrunch

risposta

9

Hai un problema con il tuo indirizzo, la e commerciale è codificata in htmlentities (&). Pertanto, parse_str pensa, il frammento inizia da lì.

Provare a utilizzare html_entity_decode prima di passare l'URL a parse_url.

+0

Buona cattura! Mi stavo già chiedendo da dove venisse il '038'. – Lekensteyn

+0

Potresti essere su qualcosa. Quindi, come posso risolverlo? – Steven

+0

Da dove viene l'url? Stai facendo qualche elaborazione su di esso? – mAu

Problemi correlati