Основные функции php для обработки строк

advertisement
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
Download