2011-11-02 13 views
5

Mam następujący adres URL:
http://sub.mysite.com/store/?store=Fine+Ting&storeid=3726&test1=value1&test2=value2dlaczego parse_url zwraca fragment?

Korzystanie print_r(parse_url($url)) daje mi to:

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

Według documentation powinienem dostać tylko fragment po hashmark #.

Dlaczego zatem parse_url zwraca fragment? Czy nie powinno to być w [query]?

+1

Nie otrzymuję elementu 'fragment' gdy używam twojego przykładu:' var_dump (parse_url ("http://sub.mysite.com/store/?store=Fine+Ting&storeid=3726&test1=value1&test2=value2")); '. Działające php5.3.5 –

+0

mnie ani ...: s – samura

+0

Działa również tutaj. Może masz problem z kodowaniem. Za pomocą hashmarka widzę '# 038;' tam, którego nie widzę nigdzie w twoim url. – KingCrunch

Odpowiedz

9

Masz problem z adresem URL, znak ampersand jest zakodowany w htmlentities (&). Dlatego uważa parse_str, że fragment zaczyna się tam.

Przed przekazaniem adresu URL spróbuj użyć html_entity_decode do parse_url.

+0

Dobry połów! Zastanawiałem się już, skąd się wzięło '038'. – Lekensteyn

+0

Możesz być na czymś. Jak mogę to rozwiązać? – Steven

+0

Skąd masz adres URL? Czy robisz na nim jakieś przetwarzanie? – mAu

Powiązane problemy