array parse_url(string query)
Функция parse_url (листинг 12.39) разбивает URL на ассоциативный массив со следующими элементами: fragment, host, pass, path, port, query, scheme и user. При этом данные, заданные аргументом query, не анализируются, так же как функцией parse_str (рис. 12.4).

Листинг 12.39. Функция parse_url

<?php
$query = "http://leon:secret@www.leonatkinson.com:8 0"
"/test/test.php3?" .
"name=Leon&occupation=Web+Engineer"; print_r(parse_url($query));
?>
Кодирование и декодирование
array pathinfo(string path)
Функция pathinfo (листинг 12.40) разбивает путь на массив, состоящий из трех частей: имя файла, имя каталога и расширение. Она совмещает в себе функциональность функций basename и dirname (рис. 12.5).

Листинг 12.40. Функция pathinfo

<?php
print_r(pathinfo('/usr/local/apache/htdocs/index.php'));

?>
Кодирование и декодирование
string quoted_printable_decode(string text)
Функция quoted_printable_decode (листинг 12.41) преобразует взятую в кавычки строку (quoted-printable) в 8-битовый двоичный вид. Как описано в документе RFC 2045, quoted-printable - это метод кодирования двоичных строк для электронной почты. В целом проблемные символы можно заменить с помощью символа = с последующим шестнадцатеричным ASCII-кодом.
Эта функция аналогична функции imap_qprint, но для ее работы не требуется расширения IMAP.

j Листинг 12.41. Функция quoted_printable_decode
<?php
$command = "Line 1=0ALine 2=0A"; print(quoted_printable_decode($command));
?>

string quotemeta(string command_text)
Функция quotemeta возвращает строку, заданную аргументом command_text, с обратными косыми чертами, предшествующими специальным символам (табл. 12.7). Сравните эту функцию с функциями addslashes и escapeshellcmd. Если есть уверенность в том, что пользовательские данные не вызовут проблем при их использовании в командах оболочки, используйте функцию escapeshellcmd. Функция quotemeta может пригодиться для выполнения сборки PHP-кода для передачи его функции eval. Обратите внимание на то, как в примере, приведенном в листинге 12.42, символы со специальным значением в двойных кавычках блокируются функцией quotemeta, предотвращая тем самым попытки отображения значения, содержащегося в переменной password.
Кодирование и декодирование
Кодирование и декодирование
Листинг 12.42. Функция quotemeta

<?php
//сымитировать пользовательский ввод
$input = '$password';
//собрать безопасную PHP-команду
$cmd = '$text = "' . quotemeta($input) . '";';
// выполнить команду
eval($cmd);
//распечатать новое значение переменной $text print($text);
?>

string rawurldecode(string url_text)
Функция rawurldecode (листинг 12.43) возвращает строку url_text, транслированную из формата представления URL в обычный текстовый формат. Она имеет обратное действие по сравнению с функцией rawurlencode. Эта функция может использоваться при работе с двоичными данными. А функция urldecode - не может.

j Листинг 12.43. Функция rawurldecode_
<?php
print(rawurldecode("mail%20leon%40example.com"));
?>

string rawurlencode(string url_text)
Функция rawurlencode (листинг 12.44) возвращает строку url_text в формате представления URL, в котором символ процента (%) используется для задания символов их ASCII-кодами, необходимыми в соответствии со спецификациями протокола HTTP. Это позволяет использовать в URL служебные и специальные символы, такие как, амперсант (&) и др. Подробнее об этом написано в документе
RFC 1738.
Данная функция может использоваться при работе с двоичными данными. Сравните ее с функцией urldecode, которая такой возможности не имеет. 

j Листинг 12.44. Функция rawurlencode_

<?php
print(rawurlencode("mail leon@clearink.com"));
?>

string rtrim(string text, string strip)
Функция rtrim (листинг 12.45) возвращает данные, заданные аргументом text, без пробелов в конце строки. Для удаления пробелов в начале строки используется функция ltrim. Для удаления пробелов как в конце, так и в начале строки используется функция trim. При этом пробелом считаются собственно пробелы, знаки табуляции и другие непечатаемые символы, включая символы null (ASCII 0). Необязательный аргумент strip заменяет символы пробелов символами, указанными в нем. Кроме того, существует возможность задавать диапазон символов с помощью двоеточия. Так, например, строка "a..f" задает все строчные буквы от a до f.

j Листинг 12.45. Функция rtrim_
<?php
print(""" .
rtrim("b этой строке имеется пробел ") .
""");
?>

string serialize(value)
Функция serialize (листинг 12.46) предназначена для преобразования значения value в ASCII-строку, которая позднее может быть трансформирована обратно с помощью функции unserialize. Трансформированное значение можно сохранить в файле или базе данных для последующей выборки. В действительности эта функция таит в себе огромные возможности для сохранения сложных структур данных в базах данных без какой-либо необходимости писать для этого специальную программу.
PHP имеет возможность трансформации любых типов данных за исключением ресурсов. При трансформации объектов PHP делает попытку выполнить метод __sleep в случае его существования. Этот метод можно использовать для подготовки объекта к трансформации.

Листинг 12.46. Функция serialize

<?php
// смоделировать покупательскую корзину в виде // многомерного массива $Basket = array(
array("soap", 1.59),
array("bread", 0.99),
array("milk", 1.29)
);
// трансформировать этот массив 
$data = serialize($Basket); //распечатать данные print($data . "<br>n"); //трансформировать данные обратно $recoveredBasket = unserialize($data); //показать содержимое
print("Трансформировано обратно:<br>n"); print_r($recoveredBasket);
?>