РНР Изучение языка
Функции преобразования Функции обрезания строки Функции поиска в тексте Замена в тексте Форматирование текста
Функция htmlspecialchars производит преобразование спецсимволов в их HTML эквиваленты Синтаксис: htmlspecialchars( str [, quote_style [, charset]]);
Первый аргумент – строка, в которой надо выполнить преобразование. В качестве второго необязательного аргумента принимается константа, задающая режим преобразования кавычек. По умолчанию, используется ENT_COMPAT, преобразующая двойные кавычки, при этом одиночные остаются без изменений. В режиме ENT_QUOTES преобразуются и двойные, и одиночные кавычки. а в режиме ENT_NOQUOTES и двойные, и одиночные кавычки остаются без изменений. Третий необязательный аргумент принимает строку, представляющую набор символов, используемых в преобразовании (по умолчанию ISO ).
К примеру, если обрабатывается какое-то сообщение $msg формы, то обработка его функцией htmlspecialchars() возможна следующим образом: $msg = htmlspecialchars($msg);
ПРИМЕР
Код, написанный в файле test1.php:
Введем в форму для ввода сообщения такой javascript-код: alert(12345); // функция вывода в JavaScript
Т.е. наша форма примет следующий вид:
В случае, если при обработке сообщения мы использовали функцию htmlspecialchars, ничего страшного не произойдет и мы просто увидим текст, который набрали:
Если не обработать сообщение функцией htmlspecialchars(): htmlspecialchars КОММЕНТАРИЙ
то на странице будет не текст скрипта, а результат его выполнения:
substr() Синтаксис: substr(str, start[, length]) Эта функция возвращает часть строки: первый аргумент – исходная строка; второй – позиция первого символа (отсчет начинается с нуля); третий – длина строки в символах, которую надо вернуть (если не указан, то возвращается вся оставшаяся часть строки).
Пример: <? $string = substr("Hello, world!", 6, 2); echo $string; ?> Результат выполнения – символ " w".
Если же третий параметр не указывать, т.е. написать $string = substr("Hello, world!", 6); то возвратиться подстрока "world!".substr
strpos() Синтаксис: strpos(haystack, needle[, offset]) Эта функция обеспечивает действие, обратное функции substr. Т.е. она возвращает позицию в строке haystack, в которой найдена переданная ей подстрока needle.
Т.е. следующий скрипт <? $string = strpos("Hello, world!", "world"); echo($string);strpos ?> вернет число 7.
Необязательный параметр offset позволяет указать в строке позицию, с которой надо начинать поиск.
substr_count() Синтаксис: substr_count(haystack, needle) Функция substr_count() находит количество вхождений фрагмента в строку. Она возвращает число фрагментов needle, присутствующих в строке haystack.
Пример: <? $str = $substr_count = echo $substr_count;substr_count ?> Результат: 3.
strlen() возвращает длину строки, которую принимает в качестве аргумента: <? $string = "Hello, world!!!"; $string_len = strlen($string); echo ($string_len); ?>
chr() Эта функция принимает в качестве аргумента ASCII-код символа и возвращает соответствующий этому коду фактический символ: <? $str = chr(36);chr echo $str; // возвращает символ "$" ?>
ord() Выполняет действие, обратное функции chr(): <? $str = ord('$'); echo $str; // возвращает 36 ?>
trim() Эта функция принимает в качестве своего единственного аргумента строку, и удаляет из нее пробелы слева и справа. Пример:
<? $str = " Hello, world! "; $str1 = trim(" Hello, world! "); $str_len = strlen($str); $str1_len = strlen($str1); echo " размер исходной строки '$str' = $str_len, размер строки после удаления пробелов = $str1_len"; ?>
результат
Функции форматного вывода. printf() sprintf() sscanf() print Синтаксис print (arg) Выводит arg. print() не является "настоящей" функцией (это конструкция языка) поэтому заключать аргумент в скобки не обязательно. Примеры: print ("Привет мир!"); print "print() можно использовать и без скобок.";
printf() и sprintf() Синтаксис: printf(format [, args]) sprintf(format [, args]) функция printf() производит форматирование и выводит результаты в выходной поток (браузер или консоль), а sprintf() после осуществления требуемого форматирования просто возвращает строку.
этими функциями можно пользоваться просто как функциями вывода: <? printf("Hello!"); // выводит "Hello!" sprintf("Hello!"); // сама по себе ничего не выводит, $str = sprintf("Hello!"); // а просто возвращает строку, printf($str); // которую затем можно вывести в выходной поток ?>
Аргумент format этих функций представляет собой строку, содержащую специальные символы, использующиеся при форматировании данных, содержащихся в списке аргументов. Эти спецсимволы называются спецификаторами преобразования, а символы, которые остаются неизменными при форматировании строки, называют директивами.
Спецификация определяется символом "%", за которым может следовать до пяти спецификаторов в следующем порядке: 1. Спецификатор заполнения Устанавливает символ, которым строка заполняется до заданного размера. По умолчанию используется пробел. Спецификатор заполнения действует только при наличии спецификатора минимальной ширины.
2. Спецификатор выравнивания По умолчанию дополнение строки до минимальной ширины производится с левого края (т.е., строка выравнивается по правому краю). Если добавлен символ дефиса, то строка выравнивается по левому краю. 3. Спецификатор минимальной ширины Представляет собой целое число, задающее минимальный размер форматированной строки. Если переданная строка меньше, то она дополняется символами, указанными в спецификаторе заполнения.
4. Спецификатор точности Предназначен для указания количества десятичных знаков в представлении чисел с плавающей точкой. При применении этого спецификатора для форматирования строк, он определяет максимальное количество символов, которое нужно взять из переданной строки
5. Спецификатор типа Этот спецификатор предназначен для указания типа данных, которые переданы в качестве аргумента. Спецификатор может принимать одно из следующих значений:
b – целое число, представляемое в двоичном виде; с – целое число, представляемое в виде символа с тем же ASCII кодом; d – целое число, представляемое в десятичном виде; f – число с плавающей точкой, представляемое в виде десятичной дроби; o – целое число, представляемое в восьмеричном виде; s – строка; x – целое число, представляемое в шестнадцатеричном виде в нижнем регистре; X – целое число, представляемое в шестнадцатеричном виде в верхнем регистре
выведем с помощью функции printf() строку в формате даты dd/mm/yyyy. Следующий код выводит в результате строку "02/03/2003": <? $day = 2; $month = 3; $year = 2003; printf("%02d/%02d/%04d", $day, $month, $year); ?>
Результат:
<? $value = 19; printf("%.3f", $value); ?>
Этот скрипт выводит число 19 в виде
Работа с файлами
Открытие файлов в файловой системе сервера производится при помощи функции fopen: fopen(filename, mode [, use_include_path])
Первый аргумент filename - имя файла или абсолютный путь к нему. Если абсолютный путь не указывается, то файл должен находится в текущем каталоге.
Второй аргумент mode говорит о том, для каких действий открывается файл и может принимать следующие значения: r (Открыть файл только для чтения; после открытия указатель файла устанавливается в начало файла); r+ (Открыть файл для чтения и записи; после открытия указатель файла устанавливается в начало файла); w (Создать новый пустой файл только для записи; если файл с таким именем уже есть вся информация в нем уничтожается);
w+ (Создать новый пустой файл для чтения записи; если файл с таким именем уже есть вся информация в нем уничтожается); a (Открыть файл для дозаписи; данные будут записываться в конец файла); a+ (Открыть файл для дозаписи и чтения данных; данные будут записываться в конец файла); b (Флаг, указывающий на работу (чтение и запись) с двоичным файлом; указывается только в Windows).
Третий необязательный аргумент use_include_path определяет должны ли искаться файлы в каталоге include_path. (Параметр include_path устанавливается в файле php.ini).
В случае удачного открытия файла, функция fopen возвращает дескриптор файла, в случае неудачи - false. Дескриптор файла представляет собой указатель на открытый файл, который используется операционной системой для поддержки операций с этим файлом. Возвращенный функцией дескриптор файла необходимо затем указывать во всех функциях, которые в дальнейшем будут работать с этим файлом.
Этот код открывает файл C:/WWW/HTML/file.txt для чтения: <? $file = fopen("c:/www/html/file.txt","r"); if(!file) { echo("Ошибка открытия файла"); } ?>
Открытие двоичного файла, к примеру, рисунка происходит таким же образом, только с флагом b: <? $file = fopen("c:/www/html/river.jpg","rb"); if(!file) { echo("Ошибка открытия файла"); } ?>
Содержимое открытого файла можно отобразить в браузере с помощью функции fpassthru: fpassthru (file) Аргумент file представляет собой дескриптор файла.