|
Строковые функции PHPФункция htmlspecialchars.Вообще говоря, эта функция относится к функциям преобразования символов, о которых пойдет разговор в этой главе. Эта функция вынесена в самое начало из-за того, что она делает одну очень важную вещь — производит преобразование спецсимволов в их HTML эквиваленты. Попросту говоря, эта функция гарантирует, что если вы вдруг вздумаете написать в гостевой книге или на форуме какой-то код (php, javascript и т.д.) он отобразиться совершенно нормально, но выполняться не будет! Т.е. функцию надо применять, если нужно вывести в браузере какой-то код.Синтаксис: string htmlspecialchars(string str [, int quote_style [, string charset]]); Первый аргумент — строка, в которой надо выполнить преобразование. В качестве второго необязательного аргумента принимается одна из двух констант: ENT_QUOTES или ENT_QUOTES. Первая константа передается если надо транслировать кавычки, а вторая, если этого делать не надо. Третий необязательный аргумент принимает строку, представляющую набор символов, используемых в преобразовании (по умолчанию ISO-8859-1). К примеру, если вы обрабатываете какое-то сообщение $msg формы, то обработка его функцией htmlspecialchars() возможна следующим образом: $msg = htmlspecialchars($msg); Давайте напишем простой php-скрипт, который будет отображать данные, вводимые в форме. <? $action = $_POST["action"]; if ( empty($action) ) { ?> <html> <head> <title> Применение функции htmlspecialchars() </title> </head> <BODY> <div align="center"> <form action=test1.php method=post> <input type=hidden name=action value=post> Сообщение<br> <textarea cols="50" rows="8" name="msg"> <? echo $msg; ?> </textarea> <br> <input type=submit value='Добавить'> </form> <div align="center"> </body> </html> <? } ?> Выводится и обрабатывается введенное сообщение файлом, указанным в атрибуте action формы (test.php): <? $msg = substr($_POST["msg"],0,1024); $msg = htmlspecialchars($msg); print "<p>".$msg."</p>\n"; ?> Здесь все просто. Выделяем из переменной $_POST["msg"] сообщение (о функции substr() смотрите чуть ниже), обрабатываем это сообщение функцией htmlspecialchars() и выводим. А теперь давайте введем в форму для ввода сообщения вместо безобидного текста вот такой javascript-код: <script language="JavaScript"> alert("Приветик!"); // функция вывода в JavaScript </script> В случае, если при обработке сообщения мы использовали эту чудо-функцию, ничего страшного не произойдет и мы просто увидим текст, который набрали: <script language="JavaScript">alert("Приветик!");</script> А вот если бы мы не обработали сообщение функцией htmlspecialchars() (закомментарьте строку $msg=htmlspecialchars($msg); в test.php), то мы увидим уже не текст скрипта, а результат его выполнения: Как понимаете, "Приветик" может быть совсем не таким безобидным. Функции поиска в тексте.substr() Синтаксис: string substr(string string, int start[, int length]) Возвращает подстроку строки string длиной length, начинающегося с start символа по счету. Если start неотрицателен, возвращаемая подстрока начинается в позиции start от начала строки, считая от нуля. Например, в строке "abcdef", в позиции 0 находится символ 'a', в позиции 2 — символ 'c', и т.д. Если третий аргумент не указан, то возвращается вся оставшаяся часть строки. Пример: <? $string = substr("Hello, world!", 7, 2); echo (); ?> Результат выполнения — подстрока "wo". Если же третий параметр не указывать, т.е. написать $string = substr("Hello, world!", 6); то возвратиться подстрока "world!". strpos() Синтаксис: string strpos(string haystack, string needle[, int offset]) Эта функция обеспечивает действие, обратное функции substr. Т.е. возвращает позицию первого вхождения needle в строку haystack. В PHP 4 используется только первый символ строки needle. Если подстрока needle не найдена, возвращает false. Если needle не является строкой, он приводится к целому и трактуется как код символа. Замечание: Эта функция может возвращать как логическое значение false, так и не относящееся к логическому типу значение, которое приводится к false, например, 0 или "". Используйте оператор === для проверки значения, возвращаемого этой функцией. Замечание: Начиная с PHP 5.0.0, необязательный аргумент offset позволяет указать, с какого по счету символа строки haystack начинать поиск. Замечание: Начиная с PHP 5.0.0 needle используется полностью (а не только первый символ). <? $string = strpos("Hello, world!", "world"); // выводит число 7 echo($string); ?> Необязательный параметр offset позволяет указать в строке позицию, с которой надо начинать поиск. strrpos() Синтаксис: string strrpos(string haystack, string needle) Эта функция ищет в строке haystack последнюю позицию, где встречается символ needle. strstr() Синтаксис: string strstr(string haystack, string needle) Функция strstr() возвращает участок строки, заданной в параметре haystack, начиная с первого фрагмента, указанного в параметре needle и до конца строки. В случае неудачи функция возвращает false. Пример: <? $url = "http://www.somehost.ru"; $www = strstr($url,"w"); echo ($www); ?> Результат: www.somehost.ru Эта функция чувствительна к регистру. Заметим также, что в случае, если needle не является строкой, то значение преобразуется в целое и используется как код искомого символа. strchr() Синтаксис: string strchr(string haystack, string needle) Данная функция работает абсолютно идентично функции strstr(): <? $url = "http://www.somehost.ru"; $www = strstr($url,"w"); echo ($www); ?> Результат: www.somehost.ru stristr() Синтаксис: string stristr(string haystack, string needle) Эта функция работает абсолютно аналогично функции strstr(), только является нечувствительной к регистру. strrchr() Синтаксис: string strrchr(string haystack, string needle) Возвращает подстроку строки haystack начиная с последнего вхождения needle до конца строки. Если подстрока needle не найдена, возвращает false. В отличие от strchr(), если needle состоит более чем из одного символа, используется только первый символ. Если needle не является строкой, он приводится к целому и трактуется как код символа. <? // получить имя файла $file_path = "http://www.host.ru/catalog/index.php"; $file_name = substr( strrchr($file_path, "/"), 1 ); ?> substr_count() Синтаксис: int substr_count(string haystack, string needle) Функция substr_count() находит количество вхождений фрагмента в строку. Она возвращает число фрагментов needle, присутствующих в строке haystack. <? $str = "http://www.host.ru/catalog/index.php"; $count1 = substr_count($str,"/"); // выводит число 4 echo $count1; $count2 = substr_count($str,"//"); // выводит число 1 echo $count2; ?> strspn() Синтаксис: int strspn(string str1, string str2) Возвращает длину участка в начале строки str1, любой символ которого входит в строку str2. <? $var = strspn("42 is the answer, what is the question ...", "1234567890"); ?> Переменной $var будет присвоено значение 2, так как "42" — это самый длинный участок строки, состоящий только из символов "1234567890". strcspn() Синтаксис: int strcspn(string str1, string str2) Обратная функции strspn() функция strcspn() определяет отсутствие начальных символов в строке. Возвращает длину участка в начале строки str1, который не содержит ни одного символа из строки str2. Источник : www.webmasterschool.ru |
Навигация по разделу |
Дизайн от Anomaly inc. 2007 год. Copyright ©2007. All rights reserved. Все права защищены. Опубликование материалов сайта разрешено только с указанием обратной ссылки на данный сайт. |