2011-11-02 11 views
5

私は、次のURLを持っている:
http://sub.mysite.com/store/?store=Fine+Ting&storeid=3726&test1=value1&test2=value2parse_urlがフラグメントを返すのはなぜですか?

print_r(parse_url($url))を使用しては私にこれを与える:

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

私はハッシュマーク#後fragmentを取得する必要がありますdocumentationによります。

なぜparse_urlはフラグメントを返すのですか? [query]にあるはずですか?

+1

あなたの例を使用すると、 'fragment'要素がありません:' var_dump(parse_url( "http://sub.mysite.com/store/?store=Fine+Ting&storeid=3726&test1=value1&test2=value2" )); '。動くphp5.3.5 –

+0

私はどちらも...:s – samura

+0

こちらの作品もあります。多分エンコードの問題があります。ハッシュマークでは、そこに '#038;'があり、あなたのURLのどこにも見ることができません。 – KingCrunch

答えて

9

urlに問題があります。アンパサンドはhtmlentities(&)でエンコードされています。したがって、parse_strは、断片がそこから始まっていると考えています。

html_entity_decodeを使用してから、parse_urlにURLを渡してください。

+0

良いキャッチ!私はすでに '038'がどこから来たのか疑問に思っていました。 – Lekensteyn

+0

あなたは何かにいるかもしれません。だから私はそれをどのように解決できますか? – Steven

+0

どこからURLを取得しますか?あなたはそれについて何らかの処理をしていますか? – mAu

関連する問題