Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
php учебник_весь.doc
Скачиваний:
8
Добавлен:
21.09.2019
Размер:
2.06 Mб
Скачать

3. Строковые функции php

Несмотря на то, что эта глава написана скорее в духе справочника, материал, изложенный в ней, достаточно серьезен, хотя и не самый сложный для понимания. Умение грамотно работать со строками очень важно для программиста.Строковых функций в PHP немало, причем многие из них, так или иначе, просто дублируют друг друга. Однако, приемы работы с основными блоками функций (функции поиска и замены в тексте, функции удаления пробельных символом (trim-функции), функции форматного вывода) надо представлять очень четко.

Вообще говоря, по определению, строка – это последовательность символов типа char, которая заканчивается нулевым символом. Поэтому, можно, конечно, радоваться тому, что при работе со строками, нам не приходится жонглировать указателями в стиле C/C++, однако не стоит забывать о том, что цена этому удобству – быстродействие. Поэтому некоторые приводимые здесь функции мы будем обсуждать в том числе и с точки зрения их быстродействия.

Функция 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 = $HTTP_POST_VARS["action"];

if ( empty($action) )

{

?>

<HTML>

<HEAD>

<TITLE>Примерчик</TITLE>

</HEAD>

<BODY>

<center>

<table width=1 border=0>

<form action=test1.php method=post>

<input type=hidden name=action value=post>

<tr><td colspan=2>Сообщение<br><textarea cols=50 rows=8 name=msg>

<? echo $msg; ?>

</textarea></td></tr>

<tr><td colspan=2><input type=submit value='Добавить'></td></tr>

</form>

</table>

</center>

</BODY>

</HTML>

<?

}

?>

Ничего сложного, просто форма для ввода сообщения. Выводится и обрабатывается введенное сообщение файлом, указанным action’е формы (test1.php). Код, написанный в этом файле тоже прост:

<?

$msg = substr($HTTP_POST_VARS["msg"],0,1024);

$msg = htmlspecialchars($msg);

print "<P>".$msg."</P>\n";

?>

Вроде как все понятно. Выделяем из переменной $HTTP_POST_VARS сообщение (о функции substr() смотрите чуть ниже), обрабатываем это сообщение функцией htmlspecialchars() и выводим.

А теперь давайте немного пошутим, и введем в форму для вода сообщения вместо безобидного текста вот такой javascript-код (пока тоже безобидный):

<Script Language="JavaScript">

alert("Приветик!"); // функция вывода в JavaScript

</Script>

Т.е. наша форма примет следующий вид:

В случае, если при обработке сообщения мы использовали эту чудо-функцию, ничего страшного не произойдет и мы просто увидим текст, который набрали:

<Script Language="JavaScript">alert("Приветик!");</Script>

А вот если, мы не обработали сообщение функцией htmlspecialchars() (закомментарьте строку $msg =htmlspecialchars($msg); в test1.php), то мы увидим уже не текст скрипта, а результат его выполнения:

Как понимаете, "приветик" может быть совсем не таким безобидным.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]