[#] Parsowanie adresu url w PHP

( Ostatnio zmieniony ndz., 29/06/2008 - 02:44 )
 

PARSEURL i URLDECODE, URLENCODE

<?php

$url = 'http://uzytkownik:haslo@serwer/sciezka?arg=wartosc#kotwica';

print_r(parse_url($url));

echo "Sama ściezka: ". parse_url($url, PHP_URL_PATH) ."\n";

?>

wynik działania:

Array
(
    [scheme] => http
    [host] => serwer
    [user] => uzytkownik
    [pass] => haslo
    [path] => /sciezka
    [query] => arg=wartosc
    [fragment] => kotwica
)
Sama ściezka: /sciezka

Lecz co w przypadku gdy url nie jest „czysty“ ? Wynik zwróciłby:

Array
(
    [path] => http%3A%2F%2Fuzytkownik%3Ahaslo%40serwer%2Fsciezka%3Farg%3Dwartosc%23kotwica
)

Dlatego też należy posłużyć się wcześniej funkcją urldecode()

<?php

$url = 'http%3A%2F%2Fuzytkownik%3Ahaslo%40serwer%2Fsciezka%3Farg%3Dwartosc%23kotwica';

print_r(parse_url(urldecode($url)));

echo "Sama ściezka: ". parse_url(urldecode($url), PHP_URL_PATH) ."\n";

?>

wynik:

Array
(
    [scheme] => http
    [host] => serwer
    [user] => uzytkownik
    [pass] => haslo
    [path] => /sciezka
    [query] => arg=wartosc
    [fragment] => kotwica
)
Sama ściezka: /sciezka

Do szyfrowania posłużyć można się funkcją urlencode()

HTMLSPECIALCHARS

<?php

function is_validate_utf8($text) {
  if (strlen($text) == 0) {
    return TRUE;
  }
  return (preg_match('/^./us', $text) == 1);
}

function check_plain($text) {
  return is_validate_utf8($text) ? htmlspecialchars($text, ENT_QUOTES) : '';
}

?>

Przykład:

<?php

$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;

// odwrócenie działania
$new htmlspecialchars_decode('&lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;' , ENT_QUOTES);
echo $new; // <a href='test'>Test</a>

?>

Zobacz też:
php.net : parse_url
php.net : urldecode
php.net : htmlspecialchars
php.net : htmlentities
php.net : html_entity_decode
php.net : strip-tags

5
Twoja ocena: Brak Średnio: 5 (2 głosy)