Лабораторная работа №4 «Работа со строками в PHP» 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Лабораторная работа №4 «Работа со строками в PHP»



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

По определению, строка – это последовательность символов типа char, которая заканчивается нулевым символом.

Функция htmlspecialchars

Вообще говоря, эта функция относится к функциям преобразования символов. Эту функция делает одну простую, но важную вещь – производит преобразование спецсимволов в их HTML эквиваленты. Попросту говоря, эта функция гарантирует, что если Вы вдруг вздумаете написать в гостевой книге или на форуме какой-то код (php, javascript и т.д.) он отобразиться совершенно нормально, но выполняться не будет! Т.е. функцию надо применять, если нужно вывести в браузере какой-то код. Кроме того, эта функция избавляет Вас от людей, которым нечем заняться кроме как писать в Ваших формах ввода какие либо скрипты. Ну а теперь, собственно, о функции.

Синтаксис:

string htmlspecialchars ( string str [, int quote_style [, string charset]] );

Первый аргумент – строка, в которой надо выполнить преобразование. В качестве второго необязательного аргумента принимается константа, задающая режим преобразования кавычек. По умолчанию, используется ENT_COMPAT, преобразующая двойные кавычки, при этом одиночные остаются без изменений. В режиме ENT_QUOTES преобразуются и двойные, и одиночные кавычки. а в режиме ENT_NOQUOTES и двойные, и одиночные кавычки остаются без изменений. Третий необязательный аргумент принимает строку, представляющую набор символов, используемых в преобразовании (по умолчанию ISO-8859-1).

К примеру, если Вы обрабатываете какое-то сообщение $msg формы, то обработка его функцией htmlspecialchars()возможна следующим образом:

$msg = htmlspecialchars ( $msg );

Давайте напишем примитивный php скрипт, который будет отображать данные, вводимые в форме.

<? $action = $_POST["action"]; if ( empty($action )) {?> <HTML> <HEAD> <TITLE>Примерчик</TITLE> </HEAD> <BODY> <center> <table 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 ( $_POST["msg"],0,1024 ); $msg = htmlspecialchars ( $msg ); print "<P>".$msg."</P>\n"; ?>

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

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

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

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

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

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

Функции поиска в тексте

Substr()

Синтаксис:

string substr ( string string, int start[, int length] )

Эта функция возвращает часть строки. Первый аргумент – исходная строка; второй – положение в строке, которую надо вернуть, первого символа (отсчет начинается с нуля); третий – длина строки в символах, которую надо вернуть. Если третий аргумент не указан, то возвращается вся оставшаяся часть строки.

Пример:

<? $string = substr("Hello, world!", 6, 1); echo ( $string ); ?>

Результат выполнения – символ "w". Если же третий параметр не указывать, т.е. написать
$string = substr("Hello, world!", 6);

то возвратиться подстрока "world!".

 

Strpos()

Синтаксис:

string strpos(string haystack, string needle[, int offset])

Эта функция обеспечивает действие, обратное функции substr. Т.е. она возвращает позицию в строке haystack, в которой найдена переданная ей подстрока needle. Т.е. следующий скрипт

<? $string = strpos ( "Hello, world!", "world" ); echo( $string ); ?>

вернет нам число 7.

Необязательный параметр offset позволяет указать в строке позицию, с которой надо начинать поиск:

 

Strrpos()

Синтаксис:

string strrpos ( string haystack, string needle )

Эта функция ищет в строке haystack последнюю позицию, где встречается символ needle.

 

Strstr()

Синтаксис:

string strstr ( string haystack, string needle )

Функция strstr() возвращает участок строки, заданной в параметре haystack, начиная с первого фрагмента, указанного в параметре needle и до конца строки. В случае неудачи функция возвращает false.

Пример:

<? $url = "http://www.softtime.ru"; $www = strstr($url,"w"); echo ( $www ); ?>

Результат: www.softtime.ru

Эта функция чувствительна к регистру. Заметим также, что в случае, если needle не является строкой, то значение преобразуется в целое и используется как код искомого символа.

 

Strchr()

Синтаксис:

string strchr ( string haystack, string needle )

Данная функция работает абсолютно идентично функции strstr():

<? $url = "http://www.softtime.ru"; $www = strstr($url,"w"); echo ( $www ); ?>

Результат: www.softtime.ru

 

Stristr()

Синтаксис:

string stristr ( string haystack, string needle )

Эта функция работает абсолютно аналогично функции strstr(), только является нечувствительной к регистру.

 

Strrchr()

Синтаксис:

string strrchr ( string haystack, string needle )

А эта функция отличается от аналогичных ей тем, что осуществляет поиск последнего вхождения подстроки. Т.е. функция strrchr() возвращает участок строки, заданной в параметре haystack, начиная с последнего фрагмента, указанного в параметре needle и до конца строки. В случае неудачи возвращает false. Чувствительна к регистру. В случае если needle не является строкой, то значение преобразуется в целое и используется как код искомого символа.

Давайте посмотрим, какая у нас директория прописана последней в переменной окружения $PATH:

<p> <font color=red> Это все, что у меня есть:)</font></p> <? echo ( $PATH ); ?> <p> <font color=red> А это – из последнего:</font></p> <? $dir = substr ( strrchr($PATH, ";"), 1 ); echo ( $dir ); ?>

 

substr_count()

Синтаксис:

int substr_count ( string haystack, string needle )

Функция substr_count() находит количество вхождений фрагмента в строку. Она возвращает число фрагментов needle, присутствующих в строке haystack.

Пример:

<? $str = "dfhd@ffs@dfskfk@asas"; $substr_count = substr_count ( $str,"@" ); echo ( $substr_count ); ?>

Результат: 3.

 

Strspn()

Синтаксис:

int strspn ( string str1, string str2 )

Функция strspn() определяет присутствие начальных символов в строке. Она возвращает длину начального фрагмента строки str1, состоящего полностью из символов, которые есть в строке str2.

Пример:

<? $str = "dfhd@ffs@dfskfk@asas"; $substr_count = strspn ( $str,"df" ); echo ( $substr_count ); ?>

Результат: 2.

 

Strcspn()

Синтаксис:

int strcspn ( string str1, string str2 )

Обратная функции strspn() функция strcspn() Определяет отсутствие начальных символов в строке.

Функция strcspn() возвращает длину начального фрагмента строки str1, состоящего полностью не из символов, которые есть в строке str2.



Поделиться:


Последнее изменение этой страницы: 2020-11-28; просмотров: 153; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.19.27.178 (0.013 с.)