A & amp; URL-hibákat ki a $ _GET

szavazat
10

Futó oldalamon keresztül http://validator.w3.org/check , kapok egy csomó hibaüzenetet mondván, hogy a linkeket használja &helyett &.

Szóval frissítettem kódot, csak hogy megtudja, hogy $_GETnem szereti ezt.

Saját URL ez volt: www.mysite.com/?foo=1&bar=2
és én változott meg ez:www.mysite.com/?foo=1&bar=2

A probléma az, hogy csinál egy print_r($_REQUEST)ad nekem ezt az eredményt:

Array ( [foo] => 1 [amp;storeid] => 2 ) 

Miért nem $_GET, $_POSTés $_REQUESTelismerik a &?

UPDATE
Ez az egyik módja I létrehoz egy URL:

$url = get_bloginfo('url')./?foo=.$element['name'].&bar=.$element['id'];
$link = '<a href='.$url.' title='.$element['name'].'>'.$element['name'].'</a>';
A kérdést 12/06/2011 13:45
a forrás felhasználó
Más nyelveken...                            


4 válasz

szavazat
19

&amp;a HTML entitás referencia &. URL paraméterek még külön egyetlen &, de ha beszélve az URL HTML, meg kell kódolni. mert

<img src="img?width=100&amp;height=100" />

A böngésző majd kéri img?width=100&height=100.

Válaszolt 12/06/2011 13:50
a forrás felhasználó

szavazat
4

Meg kell lennie kettős kódolás valahol úgy, hogy a link:

www.mysite.com/?foo=1&bar=2

válik:

www.mysite.com/?foo=1&amp;bar=2

és akkor:

www.mysite.com/?foo=1&amp;amp;bar=2

Mit olvasol helyes. Annak tisztázása, a HTML & kell kódolni &amp;. Természetesen maga az URL is csak tartalmaz &; PHP nem látja &amp;„” mert, hogy kódolás javára a böngésző.

Válaszolt 12/06/2011 14:08
a forrás felhasználó

szavazat
0

Mindenesetre ez nem egy jó gyakorlat, hogy kódolni különböző URL rész kezét. Meg kell csinálni, mint ez:

$query_string = 'foo=' . urlencode($element['name']) . '&bar=' . urlencode($element['id']);
echo '<a href="mycgi?' . htmlspecialchars($query_string) . '">';

Azt hiszem, ez meg fogja oldani a szükségtelen problémákat.

Válaszolt 12/06/2011 14:22
a forrás felhasználó

szavazat
1
// Fix for &amp; bug in url
if( $_GET ) foreach( $_GET as $key => $value )
{
    if( strpos( $key, 'amp;' ) === 0 )
    {
        $new_key = str_replace( 'amp;', '', $key );
        $_GET[ $new_key ] = $value;
        unset( $_GET[ $key ] );
    }
}

Ez nem fog működni filter_input :(

Válaszolt 11/04/2013 10:42
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more