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);
?>
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Кодирование и декодирование. Часть Девятая.
15-01-2015
<< Предыдущая статья | Следующая статья >> |
PHP. Кодирование и декодирование. Часть Восьмая. | PHP. Кодирование и декодирование. Часть Десятая. |