52680.fb2 Справочник по PHP - читать онлайн бесплатно полную версию книги . Страница 56

Справочник по PHP - читать онлайн бесплатно полную версию книги . Страница 56

Функция parse_str() интерпретирует строку str, как если бы эта строка содержала в себе переменные и их значения и передавалась бы в URL. Наша функция устанавливает для этих переменных значения.

Если задан второй необязательный параметр, то значения, найденные при помощи функции parse_str(), сохраняться не в глобальных переменных, а в элементах указанного массива.

$str = "name[]=Vasia&name[]=Pupkin&id=12645&mail=vasia@mail.ru&url=www.vasia.ru";

parse_str($str);

parse_str($str, $arr);

echo $id; // выведет 1264

echo $name[0]; // выведет Vasia

echo $name[1]; // выведет Pupkin

print_r($arr);

выведет

Array( [name] => Array ( [0] => Vasia [1] => Pupkin ) [id] => 12645 [mail] => vasia@mail.ru [url] => www.vasia.ru)

urlencode

Кодирование строки в URL

Синтаксис:

string urlencode (string str)

Возвращает строку, в которой все не алфавитно-цифровые символы (за исключением дефиса "-" и знака подчеркивания "_" и точки ".") заменены последовательностями: знак процента (%), за которым следуют две шестнадцатеричные цифры (обозначающие код символа), а символ пробела заменен на знак "+". Именно таким образом кодируются все данные, посылаемые HTML-формами. Медиа-тип этого кодирования обозначается как application/x-www-form-urlencoded; он отличается от стандарта кодирования RFC 1738 (rawurlencode()) тем, что по историческим причинам пробелы заменяются на знак плюс. Эта функция удобна при кодировании строки для использования в строке запроса, являющейся частью URL, и при передаче переменных на следующую страницу:

<?php

echo '<a href="mycgi?foo=', urlencode($userinput), '">';

?>

<?php

$query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);

echo '<a href="mycgi?' . htmlentities($query_string) . '">';

?>

urldecode

Декодирование строки из URL

Синтаксис:

string urldecode (string str)

Декодирует в строке последовательности %## (так в URL кодируются спецсимволы).

<?php

$a = explode('&', $QUERY_STRING);

$i = 0;

while ($i < count($a)) {

$b = split('=', $a[$i]);

echo 'Value for parameter ', htmlspecialchars(urldecode($b[0])),

' is ', htmlspecialchars(urldecode($b[1])), "<br />\n";

$i++;

}

?>

rawurlencode

Кодирование URL.

Синтаксис:

string RawUrlEncode(string str);

Функция RawUrlEncode() возвращает строку, в которой все не алфавитно-цифровые символы (за исключением дефиса "-", знака подчеркивания "_" и точки ".") заменены последовательностями: знак процента (%), за которым следуют две шестнадцатеричные цифры, которые обозначают код символа. Это кодирование нужно для того, чтобы буквенные символы не обрабатывались в качестве разделителей строки URL и не искажались при передаче в сетях.

echo "<A href=ftp://user:".rawurlencode($mypasswd).

"@ftp.my.com/x.txt>"; // передача пароля в гиперссылке

rawurldecode

Производит декодирование URL.

Синтаксис:

string rawurldecode(string str);

Эта функция возвращает строку, в которой последовательности с знаком процента (%) и следующими за ним двумя шестнадцатеричных числа преобразует в символы, соответствующими этому коду. Аналогична urldecode(), но не воспринимает + как пробел.