PHP Урок 8. Основные функции PHP Основные функции php для обработки строк strip_tags - Эта функция возвращает строку str , из которой удалены HTML и PHP тэги. Для удаления тэгов вам ничего не надо делать, php сделает все на автомате за вас. Вот видите, уже программный код не попадет в базу, а только чистый текст. В данной функции можно сделать исключения. Как это работает - пример использования strip_tags() Код php 01 <?php 02 $text = ' 03 <p>Параграф.</p> 04 <!-- Комментарий --> 05 Здесь текст'; 06 07 echo strip_tags($text); 08 09 echo "\n\n-------\n"; 10 11 // не удалять <p> 12 echo strip_tags($text, '<p>'); 13 ?> Вот, что получилось; Параграф. Здесь текст ------<p>Параграф.</p> Здесь текст Вот теперь можно наблюдать, как это сработало. В первом случае мы очистили все теги, а второй указали, какие не удалять Trim – очистка пробелов с начала и конца строки 1 PHP Урок 8. Основные функции PHP Эта функция возвращает строку str с удаленными из начала и конца строки пробелами. Если второй параметр не передан, trim()удаляет следующие символы: " " (ASCII 32 (0x20)), символ пробела. "\t" (ASCII 9 (0x09)), символ табуляции. "\n" (ASCII 10 (0x0A)), символ перевода строки. "\r" (ASCII 13 (0x0D)), символ возврата каретки. "\0" (ASCII 0 (0x00)), NUL-байт. "\x0B" (ASCII 11 (0x0B)), вертикальная табуляция. Ну, здесь все просто, ничего сложного не вижу. Двигаемся далее addslashes — Экранирует спецсимволы в строке (strip slashes) Описание string addslashes ( string $str ) Возвращает сроку str , в которой перед каждым спецсимволом добавлен обратный слэш (\), например, для последующего использования этой строки в запросе к базе данных. Экранируются одиночная кавычка ('), двойная кавычка ("), обратный слэш (\) и NUL (байт NULL). Функция addslashes() часто применяется при записи в базу данных. Предположим, если нужно внести в базу данных имя O'reilly, то символ ' должен быть экранирован. В большинстве баз данных для этого используется \, строка будет выглядеть как O\'reilly. Заметьте, что сам символ \ в базу данных записан не будет. Если директива конфигурации magic_quotes_sybase имеет значениеon, то символ ' будет экранироваться добавлением еще одного ' вместо \. Директива конфигурации magic_quotes_gpc по умолчанию имеет значение on, при этом функция addslashes() автоматически применяется ко всем данным GET, POST, и COOKIE. Не используйте addslashes() для данных, обработанных magic_quotes_gpc, чтобы избежать двойного экранирования. Для проверки состояния этой директивы используется get_magic_quotes_gpc(). Пример использования addslashes() 1 2 <?php $str = "Is your name O'reilly?"; 3 4 // выводит: Is your name O\'reilly? 5 echo addslashes($str); 2 PHP Урок 8. Основные функции PHP 6 ?> Если сказать просто, то функция не даст сделать SQL инъекцию в базу данных и не взломает ее. Это что касается защиты от взлома. Ну, а теперь опишу еще одну функцию, которая запретит вводить определенное количество символов. Берем, к примеру, те же комментарии, допустим, мы не хотим комментарии более 1000 символов. Для этого есть функцияstrlen strlen - Возвращает длину строки Пример использования strlen 1 strlen($str)>1000 В результате php проверит длину строки. Вот в принципе я и описал основные функции обработки строк в php. На этом, пожалуй, завершу данный пост. Есть вопросы - задавайте в комментариях, отвечу обязательно всем. Всем удачи в программировании на php. explode — Разбивает строку с помощью разделителя array explode ( string $delimiter , string $string [, int $limit ] ) Возвращает массив строк, полученных разбиением строки string с использованием delimiter в качестве разделителя. Пример <?php /* Строка, которая не содержит разделителя, будет просто возвращать массив с одним значением оригинальной строки. */ $input1 = "hello"; $input2 = "hello,there"; var_dump( explode( ',', $input1 ) ); var_dump( explode( ',', $input2 ) ); ?> 3 PHP Урок 8. Основные функции PHP strpos — Возвращает позицию первого вхождения подстроки mixed strpos ( string $haystack , mixed $needle [, int $offset = 0 ] ) Ищет позицию первого вхождения подстроки needle в строку haystack. <?php $mystring = 'abc'; $findme = 'a'; $pos = strpos($mystring, $findme); // Заметьте, что используется ===. Использование == не даст верного // результата, так как 'a' находится в нулевой позиции. if ($pos === false) { echo "Строка '$findme' не найдена в строке '$mystring'"; } else { echo "Строка '$findme' найдена в строке '$mystring'"; echo " в позиции $pos"; } ?> filter_var — Фильтрует переменную с помощью определенного фильтра mixed filter_var ( mixed $variable [, int $filter = FILTER_DEFAULT [, mixed $options ]] ) Список параметров variable Значение переменной для фильтрации. filter 4 PHP Урок 8. Основные функции PHP Идентификатор (ID) применяемого фильтра. На странице Types of filters приведен список доступных фильтров. Если не указан, то используется FILTER_DEFAULT, который равнозначен FILTER_UNSAFE_RAW. Это значит, что по умолчанию не применяется никакого фильтра. options Ассоциативный массив параметров либо логическая дизъюнкция (операция ИЛИ) флагов. Если фильтр принимает параметры, флаги могут быть указаны в элементе массива "flags". Для фильтра "callback" должен быть указан тип callable. Фильтр "callback" должен принимать один аргумент, значение для фильтрации, и возвращать значение после фильтрации. <?php // используйте этот формат для фильтров с дополнительными параметрами $options = array( 'options' => array( 'default' => 3, // значение, возвращаемое, если фильтрация завершилась неудачей // другие параметры 'min_range' => 0 ), 'flags' => FILTER_FLAG_ALLOW_OCTAL, ); $var = filter_var('0755', FILTER_VALIDATE_INT, $options); // для фильтра, который принимает только флаги, вы можете передать их непосредственно $var = filter_var('oops', FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE); // для фильтра, который принимает только флаги, вы так же можете передать их как массив $var = filter_var('oops', FILTER_VALIDATE_BOOLEAN, array('flags' => FILTER_NULL_ON_FAILURE)); 5 PHP Урок 8. Основные функции PHP // callback-фильтр валидации function foo($value) { // Ожидаемый формат: Фамилия, Имена if (strpos($value, ", ") === false) return false; list($surname, $givennames) = explode(", ", $value, 2); $empty = (empty($surname) || empty($givennames)); $notstrings = (!is_string($surname) || !is_string($givennames)); if ($empty || $notstrings) { return false; } else { return $value; } } $var = filter_var('Doe, Jane Sue', FILTER_CALLBACK, array('options' => 'foo')); ?> Возвращаемые значения Возвращает отфильтрованные данные или FALSE, если фильтрация завершилась неудачей. Примеры Пример #1 Пример использования filter_var() <?php var_dump(filter_var('bob@example.com', FILTER_VALIDATE_EMAIL)); var_dump(filter_var('http://example.com', FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED)); 6 PHP Урок 8. Основные функции PHP ?> Результат выполнения данного примера: string(15) "bob@example.com" bool(false) Фильтры валидации данных Список фильтров валидации данных ID Имя Параметры FILTER_VALIDATE_BOOLEAN Флаги Описание "boolean" default FILTER_NULL_ON_FAILURE Возвращает TRUE для значений "1", "true", "on" и "yes". Иначе возвращает FALSE. Если установлен флаг FILTER_NULL_ON_FAILURE, то FALSE возвращается только для значений "0", "false", "off", "no" и "", а NULL будет возвращен для всех небулевых значений. FILTER_VALIDATE_EMAIL "validate_email" является корректным e-mail. default Проверяет, что значение FILTER_VALIDATE_FLOAT "float" default, decimal FILTER_FLAG_ALLOW_THOUSAND Проверяет, что значение является корректным числом с плавающей точкой. FILTER_VALIDATE_INT "int" default, min_range, max_range FILTER_FLAG_ALLOW_OCTAL, FILTER_FLAG_ALLOW_HEX Проверяет, что значение является корректным целым числом, и, при необходимости, входит в определенный диапазон. FILTER_VALIDATE_IP "validate_ip" default FILTER_FLAG_IPV4, FILTER_FLAG_IPV6, FILTER_FLAG_NO_PRIV_RANGE, FILTER_FLAG_NO_RES_RANGE Проверяет, что значение является корректным IP-адресом, при необходимости только для протоколов IPv4 или IPv6, а также отсутствие вхождения в частные или зарезервированные диапазоны. FILTER_VALIDATE_REGEXP "validate_regexp" default, regexp соответствие regexp, Perl-совместимому регулярному выражению. Проверяет значение на FILTER_VALIDATE_URL "validate_url" default FILTER_FLAG_PATH_REQUIRED, FILTER_FLAG_QUERY_REQUIRED Проверяет значение на корректность URL (в соответствии с » 7 PHP Урок 8. Основные функции PHP http://www.faqs.org/rfcs/rfc2396), при желании можно указать обязательные компоненты. Имейте в виду, что корректная ссылка может не содержать HTTP-протокол http://, т.е. необходима еще одна проверка, определяющая наличие необходимого протокола у ссылки, например, ssh:// или mailto:. Обратите внимание, что функция работает только с ASCII-ссылками, таким образом, интернациональные доменные имена (содержащие не-ASCII символы) не пройдут проверку. Замечание: Начиная с PHP 5.4.11, числа +0 и -0 проверяются оба и как целые и как числа с плвающей точкой (используя FILTER_VALIDATE_FLOAT и FILTER_VALIDATE_INT). До версии PHP 5.4.11 они проверялись только как числа с плавающей точкой (FILTER_VALIDATE_FLOAT). Если естановлен параметр default, то значение defaultиспользуется, если не прошла валидаци substr — Возвращает подстроку Описание ¶ string substr ( string $string , int $start [, int $length ] ) Возвращает подстроку строки string, начинающейся с start символа по счету и длиной length символов. Список параметров ¶ string Входная строка. Должна содержать хотя бы один символ. start Если start неотрицателен, возвращаемая подстрока начинается с позиции start от начала строки, считая от нуля. Например, в строке 'abcdef', в позиции 0 находится символ 'a', в позиции 2 символ 'c', и т.д. Если start отрицательный, возвращаемая подстрока начинается с позиции, отстоящей на start символов от конца строкиstring. Если string меньше либо содержит ровно start символов, будет возвращено FALSE. Пример #1 Использование отрицательного параметра start <?php $rest = substr("abcdef", -1); // возвращает "f" $rest = substr("abcdef", -2); // возвращает "ef" $rest = substr("abcdef", -3, 1); // возвращает "d" ?> 8 PHP Урок 8. Основные функции PHP length Если length положительный, возвращаемая строка будет не длиннее length символов, начиная с параметраstart (в зависимости от длины string). Если length отрицательный, то будет отброшено указанное этим аргументом число символов с конца строки string (после того как будет вычислена стартовая позиция, если start отрицателен). Если при этом позиция начала подстроки, определяемая аргументом start, находится в отброшенной части строки или за ней, возвращается false. Если указан параметр length и является одним из 0, FALSE или NULL, то будет возвращена пустая строка. Если параметр length опущен, то будет возвращена подстрока, начинающаяся с позиции, указанной параметром start и длящейся до конца строки. Пример #2 Использование отрицательного параметра length <?php $rest = substr("abcdef", 0, -1); // возвращает "abcde" $rest = substr("abcdef", 2, -1); // возвращает "cde" $rest = substr("abcdef", 4, -4); // возвращает false $rest = substr("abcdef", -3, -1); // возвращает "de" ?> Возвращаемые значения ¶ Возвращает извлеченную часть строки, или FALSE в случае возникновения ошибки или пустую строку string. 9