Бесплатные программы, утилы, кряки, игры, уникальный софт

Строковые функции 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.
Все права защищены. Опубликование материалов сайта разрешено только с указанием обратной ссылки на данный сайт.


Hosted by uCoz