4 Строковые функции в PHP

Строка - это набор символов определенной длины, который является неотъемлемым атрибутом практически любого PHP-скрипта. Использование строковых функций в языке PHP обеспечивает взаимодействие пользователя с Web-сайтом, так как данные, передаваемые в скрипт, представляют собой не что иное, как строки [4].

4.1 Использование оператора конкатенации

Оператор конкатенации “.” Используется в языке PHP для объединения строковых значений в одну строку.

Ниже представлен пример использования оператора конкатенации.

<HTML>

    <HEAD>

    <TITLE>Пример использования оператора конкатенации</TITLE>

    </HEAD>

    <BODY>

        <?php

            $number = "323.";

            $name = "Петров Иван Иванович.";

            $data = "14.03.2010.";

            $rezult = "Заказ № ".$number." Ф.И.О.: ".$name." Дата доставки:

            ".$data; echo "<B>Информация о заказе:</B><BR><BR>$rezult";

        ?>

    </BODY>

</HTML>

Реализация данного кода представлена на рисунке 4.1.


Рисунок 4.1 – Объединение информации о заказе

Таким образом, как видно на рисунке 4.1, в данном примере с помощью оператора конкатенации была объединена в одну строку информация о заказе клиента.

4.2 Функции для работы с одиночными символами

4.2.1 Функция chr

Функция chr предназначена для определения символа по его ascii-коду.

Синтаксис:

string chr(int $ascii),

где $ascii - код символа.

Функция chr принимает в качестве аргумента код символа “$ascii” по таблицы ascii и возвращает соответствующий этому коду символ.

Ниже представлен пример работы функции chr.

<HTML>

    <HEAD>

    <TITLE>Пример использования функции chr</TITLE>

    </HEAD>

    <BODY>

        <?php

            $i = 49;

            $symbol = chr($i); // $symbol = “1”

            echo "Символ под номером $i по таблице ascii - $symbol.";

        ?>

    </BODY>

</HTML>

Реализация данного кода представлена на рисунке 4.2.


Рисунок 4.2 – Определение символа по его номеру

Таким образом, как видно на рисунке 4.2, в данном примере с помощью функции chr был определен в таблице ascii символ под номером 49, который равен “1”.

4.2.2 Функция ord

Функция ord предназначена для определения номера символа в таблице ascii.

Синтаксис:

int ord(string $smb),

где $smb - символ.

Функция ord возвращает ascii-код заданного символа “$str”.

Например, в ниже представленном коде функция ord возвращает 36, так как ascii-код символа “$” равен 36.

$str = ord('$');

Ниже представлен пример работы функции ord.

<HTML>

    <HEAD>

    <TITLE>Пример использования функции ord</TITLE>

    </HEAD>

    <BODY>

        <?php

            $symbol = 'A'; $i = ord($symbol);

            echo "Символ '$symbol' имеет номер $i в таблице ascii.";

        ?>

    </BODY>

</HTML>

Реализация данного кода представлена на рисунке 4.3.


Рисунок 4.3 – Определение номера символа по таблице ascii

Таким образом, как видно на рисунке 4.3, в данном примере, с помощью функции ord, было определено, что символ “A” в таблице ascii имеет номер 65.

4.3 Функции отрезания пробелов

4.3.1 Функция ltrim

Функция ltrim удаляет из строки начальные пробельные символы.

Синтаксис:

string ltrim(string $str),

где $str - исходная строка.

Функция ltrim удаляет исключительно начальные пробельные символы (“\n”, “\r”, “\t”, “\v”, “\0” и пробел), при этом, концевые не трогает.

4.3.2 Функция rtrim

Функция rtrim удаляет из строки конечные пробельные символы.

Синтаксис:

string rtrim(string $str),

где $str - исходная строка.

Функция удаляет исключительно конечные пробельные символы (“\n”, “\r”, “\t”, “\v”, “\0” и пробел), при этом, начальные не трогает.

4.3.3 Функция trim

Функция trim удаляет из строки начальные и конечные пробельные символы.

Синтаксис:

string trim(string $str),

где $str - исходная строка.

Функция trim возвращает копию строки, заданную переменной “$str”, с удаленными начальными и конечными пробельными символами (“\n”, “\r”, “\t”, “\v”, “\0” и пробел).

Ниже представлен пример работы функции trim.

<HTML>

    <HEAD>

    <TITLE>Пример использования функции trim</TITLE>

    </HEAD>

    <BODY>

        <?php

            $str = " программирование на PHP. ";

            $rezult = "Ваш запрос:".$str."Запрос не найден.";

            echo "<B>Пример строки без использования функции trim:</B>

            <BR>$rezult<BR><BR>";

            $rezult = "Ваш запрос:".trim($str)."Запрос не найден.";

            echo "<B>Пример строки с использованием функции trim:</B>

            <BR>$rezult<BR><BR>";

        ?>

    </BODY>

</HTML>

Реализация данного кода представлена на рисунке 4.4.


Рисунок 4.4 – Отрезание пробела в конце строки

Таким образом, как видно на рисунке 4.4, в данном примере с помощью функции trim в исходной строке “ программирование на PHP. ” были удалены начальные и конечные пробельные символы, после чего полученная строка была выведена на экран.

4.4 Поиск в тексте

4.4.1 Функция substr

Функция substr возвращает участок строки с определенной позиции и определенной длиной подстроки.

Синтаксис:

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

$str - исходная строка,

$start - начальная позиция,

$length - длина подстроки.

Функция substr возвращает участок строки “$str”, начиная с позиции “$start” (при этом, отсчет начинается с нуля) и длиной “$length”. Если аргумент “$length” не задан, то подразумевается подстрока от “$start” до конца строки “$str”. Если “$start” больше, чем длина строки или значение “$length” равно нулю, то возвращается пустая подстрока.

Параметр “$length”, если он задан, может быть отрицательным. В этом случае последним символом возвращаемой подстроки будет символ строки “$str” с индексом “$length”, определяемый от конца строки.

Ниже представлен пример работы функции substr.

<HTML>

    <HEAD>

    <TITLE>Пример использования функции substr</TITLE>

    </HEAD>

    <BODY>

        <?php

            $str1 = "фамилия, имя, отчество";

            $str2 = substr($str1, 9); // возвращается "имя, отчество"

            echo "<B>Исходная строка: </B>

            <BR>$str1<BR>";

            echo "<B>Исходная строка, начиная с 9 символа: </B>

            <BR>$str2<BR>";

            $str3 = substr($str1, -8); // возвращается "отчество"

            echo "<B>8 последних символов исходной строки: </B>

            <BR>$str3";

        ?>

    </BODY>

</HTML>

Реализация данного кода представлена на рисунке 4.5.


Рисунок 4.5 – Получение подстроки

Таким образом, как видно на рисунке 4.5, в данном примере с помощью функции substr в исходной строке “фамилия, имя, отчество” была выделена подстрока, начиная с девятого символа, то есть “имя, отчество”. Также была считана строка, состоящая из восьми последних символов, отсчитанных от конца исходной строки, то есть “отчество”. Эти строки были выведены на экран.

4.4.2 Функция strstr

Функция strstr осуществляет поиск определенной подстроки в заданной строке.

Синтаксис:

string strstr(string $poiskstr, string $needle),

где $poiskstr - строка, в которой осуществляется поиск,

$needle - подстрока для поиска.

Функция strstr возвращает участок строки, заданной в параметре “$poiskstr”, начиная с первого фрагмента, указанного в параметре “$needle” и до конца строки. Если параметр “$needle” не является строкой, то значение преобразуется в целое число и используется как код искомого символа. В случае неудачи функция strstr возвращает false. При этом данная функция чувствительна к регистру.

Например, в представленном ниже коде

$url = "http://www.softtime.ru";

$www = strstr($url,"w");

с помощью функции strstr было получено содержимое исходной строки после первого вхождения символа “w”: www.softtime.ru.

Ниже представлен пример работы функции strstr.

<HTML>

    <HEAD>

    <TITLE>Пример использования функции strstr</TITLE>

    </HEAD>

    <BODY>

        <?php

            $str = "Демонстрационный пример использования функции strstr.";

            $substr = "функции";

            echo "Исходная строка: $str<BR>";

            if (strstr($str,$substr))

            {echo 'Подстрока "'; echo $substr; echo '" найдена в исходной

            строке.';} // вывод сообщения об удачном результате поиска

            else {echo 'Подстрока "'; echo $substr; echo '" не найдена в исходной

            строке.';} // сообщение о неудачном результате поиска

        ?>

    </BODY>

</HTML>

Реализация данного кода представлена на рисунке 4.6.


Рисунок 4.6 – Поиск подстроки

Таким образом, как видно на рисунка 4.6, в данном примере с помощью функции strstr была найдена подстрока “функции” в исходной строке “Демонстрационный пример использования функции strstr”.

4.4.3 Функция stristr

Функция stristr осуществляет поиск определенной подстроки в заданной строке, без учета регистра.

Синтаксис:

string stristr(string $poiskstr, string $needle),

где $poiskstr - строка, в которой осуществляется поиск,

$needle - подстрока для поиска.

Функция stristr возвращает участок строки, заданной в параметре “$poiskstr”, начиная с первого фрагмента, указанного в параметре “$needle” и до конца строки. Данная функция аналогична функции strstr, за исключением того, что она не чувствительна к регистру символов.

4.4.4 Функция strpos

Функция strpos находит позицию первого вхождения подстроки в заданной строке.

Синтаксис:

int strpos(string $where, string $what [, int $fromwhere]),

где $where - строка,

$what - подстрока,

$fromwhere - место поиска в строке.

Функция strpos находит в строке “$where” позицию первого вхождения подстроки “$what” и, в случае успеха, возвращает позицию этой подстроки в строке (отсчет начинается с нуля). В противном случае, функция возвращает false. Необязательный параметр “$fromwhere” указывает в строке позицию, с которой необходимо начинать поиск.

Если параметр “$what” не является строкой, его значение преобразуется в целое число и используется как код искомого символа.

Ниже представлен пример работы функции strpos.

<HTML>

    <HEAD>

    <TITLE>Пример использования функции strpos</TITLE>

    </HEAD>

    <BODY>

        <?php

            $whole_name = "Иван Петров.";

            $letter_position = strpos($whole_name,"а");

            // поиск позиции буквы “а”

            echo "Исходная строка: $whole_name<br>";

            echo "Позиция буквы "a" в исходной строке:

            $letter_position."; //вывод позиции буквы “а” на экран

        ?>

    </BODY>

</HTML>

Реализация данного кода представлена на рисунке 4.7.


Рисунок 4.7 – Определение позиции символа “а”

Таким образом, как видно на рисунке 4.7, в данном примере с помощью функции strpos была определена позиция буквы “а”, равная двум.

4.4.5 Функция strrchr

Функция strrchr осуществляет поиск последнего вхождения подстроки в заданной строке.

Синтаксис:

string strrchr(string $str, string $simbl),

где $str - строка, в которой осуществляется поиск,

$simbl - подстрока для поиска.

Функция strrchr возвращает участок строки “$str”, начиная с последнего фрагмента, указанного в параметре “$simbl” и до конца строки. В случае неудачи функция возвращает false. Данная функция чувствительна к регистру. Если параметр “$simbl” не является строкой, то значение преобразуется в целое и используется как код искомого символа.

Ниже представлен пример работы функции strrchr.

<HTML>

    <HEAD>

    <TITLE> Пример использования функции strrchr</TITLE>

    </HEAD>

    <BODY>

        <?php

            $Path = "C:/Program Files/Microsoft Office/Office";

            $dir = strrchr($Path, "/");

            echo "<B>Исходная строка:</B>".$ Path."<br>";

            echo "<B>Полученная строка, начиная с последнего '/':</B> ".$dir;

        ?>

    </BODY>

</HTML>

Результат работы срипта представлен на рисунке 4.8.


Рисунок 4.8 - Получение подстроки

Таким образом, как видно на рисунке 4.8, в данном примере с помощью функции strrchr была найдена строка после последнего вхождение символа “/” в строке “C:/Program Files/Microsoft Office/Office”. В результате на экран был выведен последний участок строки, равный “/Office”.

4.5 Функции сравнения

4.5.1 Функция strcmp

Функция strcmp осуществляет сравнение двух строк.

Синтаксис:

int strcmp(string $str1, string $str2),

где $str1 - первая строка,

$str2 - вторая строка.

Функция strcmp сравнивает посимвольно две строки, заданные параметрами “$str1” и “$str2”, и возвращает следующие значения:

- “0”, если строки полностью совпадают;

- “-1”, если строка “$str1” меньше “$str2”;

- “1”, если строка “$str1” больше “$str2”.

Функция является чувствительной к регистру, поскольку сравнение происходит побайтово.

Ниже представлен пример работы функции strcmp.

<HTML>

    <HEAD>

    <TITLE> Пример использования функции strcmp</TITLE>

    </HEAD>

    <BODY>

        <?php

            $whole_name1 = "Иван Петров.";

            $whole_name2 = "Иван Петров.";

            echo "<B>Исходная строка 1:</B> $whole_name1<br>";

            echo "<B>Исходная строка 2:</B> $whole_name2<br>";

            $rez = strcmp($whole_name1,$whole_name2);

            // сравнение двух строк

            if ($rez == 0) echo "Строки полностью равны";

            // вывод сообщения, если строки равны

            else

            if ($rez == -1) echo "Исходная строка 1 < исходной строки 2";

            // вывод сообщения, если первая строка меньше второй

            else if ($rez == 1) echo "Исходная строка 1 > исходной строки 2";

            // вывод сообщения, если первая строка больше второй

        ?>

    </BODY>

</HTML>

Результат работы данного кода представлен на рисунке 4.9.


Рисунок 4.9 – Сравнение строк

Таким образом, как видно на рисунке 4.9, в данном примере, при сравнении двух строк с помощью функции strcmp оказалось, что данные строки абсолютно равны.

4.5.2 Функция strcasecmp

Функция strcasecmp сравнивает строки без учета регистра.

Синтаксис:

int strcasecmp(string $str1, string $str2),

где $str1 - первая строка,

$str2 - вторая строка.

Функция strcasecmp сравнивает посимвольно две строки. Функция аналогична strcmp за исключением того, что не учитывает регистр символов.

Ниже представлен пример работы функции strcasecmp.

<HTML>

    <HEAD>

    <TITLE> Пример использования функции strcasecmp</TITLE>

    </HEAD>

    <BODY>

        <?php

            $str1 = "Привет!"; $str2 = "привет!";

            if(!strcasecmp($str1, $str2))

            echo "Строки \"$str1\" и \"$str2\" равны при сравнении строк без учета регистра.";

            else echo "Строки \"$str1\" и \"$str2\" не равны при сравнении строк без учета регистра.";

        ?>

    </BODY>

</HTML>

Реализация данного кода представлена на рисунке 4.10.


Рисунок 4.10 – Сравнение строк без учета регистра

Таким образом, как видно на рисунке 4.10, в данном примере с помощью функции strcasecmp сравнивались строки “Привет!” и “привет!”, которые оказались равны без учета регистра.

4.6 Форматирование и вывод строк

4.6.1 Функция print

Функция print выводит на экран заданную строку, значение переменной или выражение.

Синтаксис:

print(string $arg),

где $arg - выводимая информация.

Функция print выводит на экран аргумент “$arg”, в качестве которого может быть переменная или выражение.

4.6.2 Функция echo

Функция echo производит вывод на экран одного или нескольких значений.

Синтаксис:

echo(string $arg1, [string [$argn]...]),

где $arg1,...,$argn - выводимая информация.

Функция echo выводит на экран значения параметров, заданных в аргументах “$arg1”,...,“$argn”. Функция echo является аналогичной функции print.

Ниже представлен пример работы функций echo и print.

<HTML>

    <HEAD>

    <TITLE>Пример совместного использования функций echo и print

    </TITLE>

    </HEAD>

    <BODY>

        <?php

            $varible = "PHP";

            echo "Привет от $varible!<BR>"; // использование функции echo

            echo "Это сообщение ","выведено с помощью функции echo! <BR>";

            // использования функции echo с несколькими параметрами

            print("А это сообщение выведено с помощью функции print!");

            // использование функции print

        ?>

    </BODY>

</HTML>

Реализация данного кода представлена на рисунке 4.11.


Рисунок 4.11 – Вывод текста на экран

Таким образом, как видно на рисунке 4.11, в данном примере на экран были выведены сообщения с помощью функций echo и print. В отличие от функции print, функция echo позволяет выводить сразу несколько строковых переменных.

4.6.3 Функция printf

Функция printf производит вывод отформатированной строки.

Синтаксис:

int printf(string $format [, mixed $args, ...]),

$format - формат вывода,

$args - аргументы.

Функция printf производит форматирование и вывод заданной строки на экран. При этом аргумент “$format” представляет собой строку, содержащую специальные символы. Эти символы используются при форматировании данных, содержащихся в списке аргументов, и называются спецификаторами преобразования. Символы, которые остаются неизменными при форматировании строки, называются директивами. Спецификация определяется символом “%”, за которым может следовать до пяти спецификаторов в следующем порядке:

1 спецификатор заполнения. Устанавливает символ, которым строка заполняется до заданного размера. По умолчанию используется пробел,

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

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

4 спецификатор точности. Предназначен для указания количества десятичных знаков в представлении чисел с плавающей точкой,

5 спецификатор типа. Этот спецификатор предназначен для указания типа данных, которые переданы в качестве аргумента. Спецификатор может принимать одно из следующих значений:

- b – целое число, представляемое в двоичном виде,

- с – целое число, представляемое в виде символа с тем же ascii-кодом,

- d – целое число, представляемое в десятичном виде,

- f – число с плавающей точкой,

- o - целое число, представляемое в восьмеричном виде,

- s – строка,

- x – целое шестнадцатеричное число в нижнем регистре,

- X – целое шестнадцатеричное число в верхнем регистре.

Ниже представлен пример работы функции printf.

<HTML>

    <HEAD>

    <TITLE>Пример использования функции printf</TITLE>

    </HEAD>

    <BODY>

        <?php

            $kurs = 29,15;

            $kol = 10;

            $rez = $kol * $kurs;

            printf("%d долларов = %f, если курс доллара равен

            %f",$kol,$rez,$kurs);

        ?>

    </BODY>

</HTML>

Результат работы данного кода представлен на рисунке 4.12.


Рисунок 4.12 – Перевод долларов в рубли

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

4.7 Составление, разбиение строк

4.7.1 Функция explode

Функция explode осуществляет преобразование строки в массив.

Синтаксис:

array explode(string $separator, string $str [, int $limit]),

где $separator - разделитель.

$str - исходная строка,

$limit - максимальное количество элементов в массиве.

Функция explode возвращает массив строк, каждая из которых соответствует фрагменту исходной строки “$str”, находящемуся между разделителями, указанными аргументом “$separator”.

Необязательный параметр “$limit” указывает на максимальное количество элементов в массиве. Оставшаяся неразделенная часть будет содержаться в последнем элементе.

Например, в представленном ниже коде

$str = "one two three for five";

$str_exp = explode(" ", $str);

с помощью функции explode строка “$str” была разделена на массив: $strep = array ([0] => one, [1] => two, [2] => three, [3] => for, [4] => five).

4.7.2 Функция implode

Функция implode осуществляет объединение массива в строку.

Синтаксис:

string implode(string $var, array $param),

где $var - разделитель,

$param - массив строк.

Функция implode возвращает строку, которая содержит последовательно все элементы массива, заданного в параметре “$param”, между которыми указывается разделитель, заданный в параметре “$var”.

Например, в представленном ниже коде

$arr = array([0] => one, [1] => two, [2] => three, [3] => four, [4] => five)

$str = implode(":", $arr);

с помощью функции implode был объединен массив в строку. В качестве разделителя использовалось двоеточие: "one:two:three:for:five".

4.7.3 Функция join

Функция join производит объединение массива в строку.

Синтаксис:

string join(string $var, array $param),

где $var - разделитель,

$param - массив строк.

Функция join аналогична функции implode.

Ниже представлен пример работы функций join и implode.

<HTML>

    <HEAD>

    <TITLE>Пример использования функций implode и join</TITLE>

    </HEAD>

    <BODY>

        <?php

            $arr = array("C:", "Program files", "Office");

            $str1 = implode("//", $arr);

            $str2 = join("//", $arr);

            echo "<B>Результат использования функции implode:</B> $str1 <BR>";

            echo "<B>Результат использования функции join:</B> $str2";

        ?>

    </BODY>

</HTML>

Результат работы данного кода представлен на рисунке 4.13.


Рисунок 4.13 - Слияние элементов в строку

Таким образом, как видно на рисунке 4.13, в данном примере осуществлялось объединение массивов в строку с помощью двух функций. Функции implode и join оказались аналогичны. В результате на экран была выведена строка “C:/Program files/Office”.

4.7.4 Функция strtok

Функция strtok возвращает строку по частям.

Синтаксис:

string strtok(string $arg1, string $arg2),

где $arg1 - строка,

$arg2 - разделитель.

Функция strtok возвращает часть строки “$arg1” до разделителя “$arg2”. При первом вызове функция принимает два аргумента: исходную строку “$arg1” и разделитель “$arg2”. При последующих вызовах возвращается следующая часть до следующего разделителя, и так до конца строки.

Ниже представлен пример работы функции strtok.

<HTML>

    <HEAD>

    <TITLE>Пример использования функции strtok</TITLE>

    </HEAD>

    <BODY>

        <?php

            $str="Это пример строки";

            $tok = strtok($str, " ");

            while($tok) { echo "$tok <br>";

            $tok = strtok(" "); };

        ?>

    </BODY>

</HTML>

Результат работы срипта представлен на рисунке 4.14.


Рисунок 4.14 – Разбиение строки на части

Таким образом, как видно на рисунке 4.14, в данном примере с помощью функции strtok исходная строка была разбита на части. Эти части были выведены на экран, разделенные пробелом.

4.7.5 Функция str_repeat

Функция str_repeat осуществляет повторение строки определенное количество раз.

Синтаксис:

string str_repeat(string $str, int $number),

где $str - строка,

$number - количество повторений.

Функция str_repeat повторяет строку “$str” определенное количество раз, которое указано в параметре “$number”.

Например, в приведенном ниже примере

echo str_repeat("Hello!",3);

с помощью функции str_repeat на экран выводится Hello! Hello! Hello!

4.8 Строковые суммы

4.8.1 Функция strlen

Функция strlen возвращает длину строки.

Синтаксис:

int strlen(string $str),

где $str - строка.

Функция strlen возвращает длину строки “$str”, которую принимает в качестве аргумента.

Ниже приведен пример работы функции strlen.

<HTML>

    <HEAD>

    <TITLE>Пример использования функции strlen</TITLE>

    </HEAD>

    <BODY>

        <?php

            $str = "Иван Петров"; // исходная строка

            $lit = strlen($str);

            echo "<B>Строка:</B> Иван Петров<BR>";

            echo "<B>Длина строки:</B> $lit символов";

        ?>

    </BODY>

</HTML>

Реализация данного кода представлена на рисунке 4.15.


Рисунок 4.15 – Определение количества символов

Таким образом, как видно на рисунке 4.15, в данном примере с помощью функции strlen была определена длина исходной строки “Иван Петров”, равная 11 символов.

4.8.2 Функция count_chars

Функция count_chars возвращает информацию о символах строки.

Синтаксис:

mixed count_chars(string $str [, int $mode]),

где $str - исходная строка,

$mode - режим.

Функция count_chars подсчитывает частоту появления каждого байта (0-255) в строке “$str” и возвращает результат в массиве, согласно необязательному аргументу “$mode”. При этом “$mode” может принимать следующие значения:

- 0 (по умолчанию) - массив с байтами в качестве индексов и частотой повторения в качестве значений элемента массива,

- 1 - похож на 0, но отсутствующие в строке “$str” байты не возвращаются,

- 2 - похож на 0, но возвращаются только те байты, которые отсутствуют,

- 3 - возвращается строка, состоящая из всех обнаруженных символов,

- 4 - возвращается строка, состоящая из всех отсутствующих символов.

4.9 Функции форматных преобразований

4.9.1 Функция parse_url

Функция parse_url обрабатывает адрес ресурса, заданный в формате URL и возвращает его компоненты.

Синтаксис:

array parse_url(string $url),

где $url - URL-адрес.

Функция parse_url возвращает ассоциативный массив, включающий компоненты URL: “scheme”, “host”, “port”, “user”, “pass”, “path”, “query” и др.

Ниже представлен пример работы функции parse_url.

<HTML>

    <HEAD>

    <TITLE>Пример использования функции parse_url</TITLE>

    </HEAD>

    <BODY>

        <?php

            $url = "http://localhost/example.php";

            $mas = parse_url($url);

            $p = $mas["path"]; // определение пути к файлу

            echo "<B>Путь к файлу запущенной страницы на сервере:</B>$p";

        ?>

    </BODY>

</HTML>

Результат работы данного скрипта представлен на рисунке 4.16.


Рисунок 4.16 – Определение пути к файлу

Таким образом, как видно на рисунке 4.16, в данном примере с помощью функции parse_url был определен путь к файлу страницы.

4.9.2 Функция parse_str

Функция parse_str заносит строки URL-адреса в переменные.

Синтаксис:

void parse_str(string $str [, array $arr]),

где $str - исходная строка,

$arr - массив для сохранения.

Функция parse_str интерпретирует строку “$str”, как строку, содержащую в себе переменные и их значения и передающуюся в URL. Функция устанавливает для этих переменных значения. Если задан второй необязательный параметр “$arr”, то значения, найденные при помощи функции parse_str, должны сохраняться в элементах указанного массива.

Например, в представленном ниже коде

$str = "id=12645&mail= ivanov@mail.ru&url=www.ivanov.ru";

parse_str($str);

исходная строка была занесена в переменные. При этом переменной “$id” присвоилось значение “12645”, переменной “$mail” присвоилось значение “ivanov”, переменной “$url” присвоилось значение www.ivanov.ru.

4.10 Функции для преобразования символов

4.10.1 Функция htmlspecialchars

Функция htmlspecialchars производит преобразование спецсимволов в их HTML-эквиваленты.

Синтаксис:

string htmlspecialchars(string $str [, int $style]),

где $str - исходная строка,

$style - тип замены.

Функция htmlspecialchars заменяет в строке спецсимволы (такие как, амперсанд, кавычки, знаки “больше” и “меньше”) на их HTML-эквиваленты. При помощи необязательного атрибута “$style” указывается, что делать с кавычками: либо ENT_COMPAT (по умолчанию) - разрешить трансляцию только двойных кавычек, либо ENT_QUOTES - разрешить трансляцию любых кавычек, либо ENT_NOQUOTES - запретить трансляцию любых кавычек.

Например, в представленном ниже коде

$str = htmlspecialchars("<a href=index.php>Главная</a>", ENT_QUOTES);

echo $str;

с помощью функции htmlspecialchars символы “<” и “>” были заменены специальными символами в HTML-коде. В результате была выведена строка: <a href=index.php> Главная</a>.

4.10.2 Функция strip_tags

Функция strip_tags удаляет из строки все теги, за исключением указанных.

Синтаксис:

string strip_tags(string $str [, string $allowable_tags]),

где $str - исходная строка,

$allowable_tags - теги, которые не следует удалять из строки.

Функция strip_tags удаляет из строки все теги и возвращает результат. В параметре “$allowable_tags” можно передать теги, которые не следует удалять из строки. Они должны перечисляться друг за другом.

Ниже представлен пример работы функции strip_tags.

<HTML>

    <HEAD>

    <TITLE>Пример использования функции strip_tags</TITLE>

    </HEAD>

    <BODY>

        <?php

            $st="

            <b>Жирный текст</b>;

            <i>Текст курсив</i> ;

            <u>Подчеркнутый текст</u>;

            <tt>Моноширный текст.</tt>";

            echo "Исходный текст: $st <br>";

            echo "Текст после удаления тегов: ".strip_tags($st,"<b><i>")."";

        ?>

    </BODY>

</HTML>

Результат работы данного скрипта представлен на рисунке 4.17.


Рисунок 4.17 – Удаление тегов из текста

Таким образом, как видно на рисунке 4.17, в данном примере на экран была выведена строка, в которой теги <b> и <i> не были удалены, так как были заданы в параметрах функции strip_tags, а теги <u> и <tt> удалены.

4.11 Работа с блоками текста

4.11.1 Функция str_replace

Функция str_replace заменяет в строке одни подстроки на другие.

Синтаксис:

string str_replace(string $from, string $to, string $str),

где $from - заменяемая подстрока,

$to - подстрока, на которую заменяется “from”,

$str - исходная строка.

Функция str_replace заменяет в строке “$str” все вхождения подстроки “$from” на “$to” и возвращает результат.

Ниже представлен пример работы функции str_replace.

<HTML>

    <HEAD>

    <TITLE>Пример использования функции str_replace</TITLE>

    </HEAD>

    <BODY>

        <?php

            $str=" Приятное утро.";

            echo "<B>Исходный текст:</B>$str"; // вывод исходной строки

            $str = str_replace("утро", "день", $str); // замена "утро" на "день"

            $str = str_replace("ое", "ый", $str); // замена “ое” на "ый"

            echo "<BR><B> После замены подстрок:</B> ".$str."";

        ?>

    </BODY>

</HTML>

Результат работы данного кода представлен на рисунке 4.18.


Рисунок 4.18 – Замена подстрок

Таким образом, как видно на рисунке 4.18, в данном примере с помощью функции str_replace была произведена замена подстрок “утро” на “день” и “ое” на “ый”.

4.11.2 Функция addslashes

Функция addslashes осуществляет добавление слешей перед специальными символами строки.

Синтаксис:

string addslashes(string $str),

где $str - исходная строка.

Функция addslashes осуществляет добавление только перед следующими символами: “,” и “\”.

Функция addslashes добавляет обратную косую черту всякий раз, когда встречает строковый символ, который может создать проблему в базе данных. Эта функция предназначена для защиты записей баз данных.

Например, в ниже представленном коде функция addslashes при-меняется к введенному пользователем значению (Александр’Пушкин). При этом сохраняемое в базе данных имя пользователя будет корректным:

$username = addslashes($username);

$query = "INSERT INTO clients (username) values ('$username')";

mysql_query($query);

Во время выполнения данного кода функция addslashes преобразует строку Александр’Пушкин в строку Александр\’Пушкин. Обратная косая черта экранирует апостроф и, таким образом, в базу данных принимаются оба символа без сбоев.

При этом при выводе имени пользователя необходимо использовать функцию stripslashes, которая удаляет обратные косые, вставленные функцией addslashes.

4.11.3 Функция stripslashes

Функция stripslashes осуществляет удаление обратных слешей.

Синтаксис:

string stripslashes(string $str),

где $str - исходная строка.

Функция stripslashes производит замену в строке “$str” предваренных слешем символов на их кодовые эквиваленты. Функция работает с символами “,” и “\”. Функция stripslashes используется совместно с функцией addslashes при работе с базой данных.

4.11.4 Функция strrev

Функция strrev производит реверс строки.

Синтаксис:

string strrev(string $str),

где $str - исходная строка.

Функция strrev осуществляет реверс исходной строки, заданной параметом “$str” и возвращает инвертированную строку.

Ниже представлен пример работы функции strrev.

<HTML>

    <HEAD>

    <TITLE>Пример использования функции strrev</TITLE>

    </HEAD>

    <BODY>

        <?php

            $str="Список товаров";

            echo "<B>Исходный текст: </B><BR>$str";

            $str = strrev($str); // инвертирование строки $str

            echo "<B><HR>Текст после инвертирования: </B><BR>$str";

        ?>

    </BODY>

</HTML>

Результат работы данного кода представлен на рисунке 4.19.


Рисунок 4.19 – Инверсия строки

Таким образом, как видно на рисунке 4.19, в данном примере с помощью функции strrev, строка “Список товаров” была инвертирована в строку “воравот косипС”.

4.11.5 Функция wordwrap

Функция wordwrap разбивает исходный текст на строки.

Синтаксис:

string wordwrap(string $str [, int $width [, string $break [, int $cut]]]),

где $str - исходная строка,

$width - максимальная длина строки,

$break - завершающий символ,

$cut - специфицированная ширина строки.

Функция wordwrap делает разбиение строки “$str” на заданное количество символов “$width”, с использованием символа разрыва строки. То есть строка “$str” разбивается на несколько строк, завершаемых символами “$break”, так, чтобы в одной строке было не более “$width” символов.