PHP и MySQLГлава 3. Строковые функции PHP.§ 3.1. Функция htmlspecialchars.Вообще говоря, эта функция относится к функциям преобразования символов, о которых пойдет разговор в этой главе. Эта функция вынесена в самое начало из-за того, что она делает одну очень важную вещь — производит преобразование спецсимволов в их HTML эквиваленты. Попросту говоря, эта функция гарантирует, что если вы вдруг вздумаете написать в гостевой книге или на форуме какой-то код (php, javascript и т.д.) он отобразиться совершенно нормально, но выполняться не будет! Т.е. функцию надо применять, если нужно вывести в браузере какой-то код. Синтаксис:string htmlspecialchars(string str [, int quote_style [, string charset]]);
Первый аргумент — строка, в которой надо выполнить преобразование. В качестве
второго необязательного аргумента принимается одна из двух констант:
К примеру, если вы обрабатываете какое-то сообщение $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> <? } ?>
Выводится и обрабатывается введенное сообщение файлом, указанным в атрибуте <? $msg = substr($_POST["msg"],0,1024); $msg = htmlspecialchars($msg); print "<p>".$msg."</p>\n"; ?>
Здесь все просто. Выделяем из переменной А теперь давайте введем в форму для ввода сообщения вместо безобидного текста вот такой javascript-код: <script language="JavaScript"> alert("Приветик!"); // функция вывода в JavaScript </script> Т.е. наша форма примет следующий вид: В случае, если при обработке сообщения мы использовали эту чудо-функцию, ничего страшного не произойдет и мы просто увидим текст, который набрали: <script language="JavaScript">alert("Приветик!");</script>
А вот если бы мы не обработали сообщение функцией Как понимаете, "Приветик" может быть совсем не таким безобидным. § 3.2. Функции поиска в тексте.3.2.1. substr()Синтаксис:string substr(string string, int start[, int length])
Возвращает подстроку строки
Если Если третий аргумент не указан, то возвращается вся оставшаяся часть строки. Пример:<? $string = substr("Hello, world!", 7, 2); echo (); ?> Результат выполнения — подстрока "wo". Если же третий параметр не указывать, т.е. написать $string = substr("Hello, world!", 6);то возвратиться подстрока "world!". 3.2.2. strpos()Синтаксис:string strpos(string haystack, string needle[, int offset])
Эта функция обеспечивает действие, обратное функции
Если подстрока
Если
Замечание:
Замечание:
Замечание: <? $string = strpos("Hello, world!", "world"); // выводит число 7 echo($string); ?>
Необязательный параметр 3.2.3. strrpos()Синтаксис:string strrpos(string haystack, string needle)
Эта функция ищет в строке 3.2.4. strstr()Синтаксис:string strstr(string haystack, string needle)
Функция <? $url = "http://www.somehost.ru"; $www = strstr($url,"w"); echo ($www); ?>
Результат:
Эта функция чувствительна к регистру. Заметим также, что в случае, если 3.2.5. strchr()Синтаксис:string strchr(string haystack, string needle)
Данная функция работает абсолютно идентично функции <? $url = "http://www.somehost.ru"; $www = strstr($url,"w"); echo ($www); ?>
Результат: 3.2.6. stristr()Синтаксис:string stristr(string haystack, string needle)
Эта функция работает абсолютно аналогично функции 3.2.7. strrchr()Синтаксис:string strrchr(string haystack, string needle)
Возвращает подстроку строки
Если подстрока
В отличие от needle не является строкой, он приводится к целому и трактуется как код символа.
<? // получить имя файла $file_path = "http://www.host.ru/catalog/index.php"; $file_name = substr( strrchr($file_path, "/"), 1 ); ?> 3.2.8. substr_count()Синтаксис:int substr_count(string haystack, string needle)
Функция <? $str = "http://www.host.ru/catalog/index.php"; $count1 = substr_count($str,"/"); // выводит число 4 echo $count1; $count2 = substr_count($str,"//"); // выводит число 1 echo $count2; ?> 3.2.9. strspn()Синтаксис:int strspn(string str1, string str2)
Возвращает длину участка в начале строки <? $var = strspn("42 is the answer, what is the question ...", "1234567890"); ?>
Переменной 3.2.10. strcspn()Синтаксис:int strcspn(string str1, string str2)
Обратная функции
Возвращает длину участка в начале строки |
||