PHP
Функции работы со строками
Наиболее полезные функции для работы со строками в PHP
php.net - функции для работы со строками
php.net - функции для работы с многобайтовыми строками
explode - разбивает строку с помощью разделителя
implode - объединяет элементы массива в строку (join - псевдоним implode())
trim - удаляет пробелы или другие символы из начала и конца строки
rtrim - удаляет пробелы или другие символы из конца строки (справа)
ltrim- удаляет пробелы или другие символы из начала строки (слева)
nl2br- вставляет HTML-код разрыва строки перед каждым переводом строки(эн-эль-ту-брэйк)
str_replace- заменяет все вхождения строки поиска на строку замены
str_ireplace- регистронезависимый вариант функции str_replace()
strip_tags- удаляет теги HTML и PHP из строки
strlen- возвращает длину строки (количество байт)
strpos- возвращает позицию первого вхождения подстроки
(функция аналогична функции mb_strpos)
strtolower- преобразует строку в нижний регистр(функция аналогична функции mb_strtolower )
strtoupper- преобразует строку в верхний регистр(функция аналогична функции mb_strtoupper)
substr- возвращает подстроку(функция аналогична функции mb_substr)
htmlspecialchars - преобразует специальные символы в HTML-сущности
htmlspecialchars_decode- преобразует специальные HTML-сущности обратно в соответствующие символы
htmlentities- преобразует все возможные символы в соответствующие HTML-сущности
Функции для работы с многобайтовыми строками
mb_strlen - получает длину строки (при работе с многобайтовыми строками)
mb_strpos- поиск позиции первого вхождения одной строки в другую
mb_strtolower- приведение строки к нижнему регистру
mb_strtoupper- приведение строки к верхнему регистру
mb_substr- возвращает часть строки
explode
Функция explode - возвращает массив строк, полученных разбиением строки str с использованием разделителя, в данном случае, разделитель - пробел(' '). Третий параметр - ограничевает количество элементов массива
<?php
$str = 'Иванов Иван Иванович' ;
$data = (' ', $str ) ;
( $data );
echo $data [0 ]; // обращение к элементу массива $data
echo $data [1];
echo $data [2];
// выведет:
// Array ( [0] => Иванов [1] => Иван [2] => Иванович )
// Иванов
// Иван
// Иванович
$data1 = (' ' , $str , 1); // один элемент в массиве
($data1 );
$data2 = (' ', $str , 2); // два элемента в массиве
($data2 );
// выведет:
// Array ( [0] => Иванов Иван Иванович ) - один элемент в массиве
// Array ( [0] => Иванов [1] => Иван Иванович ) - два элемента в массиве
?>
implode
Функция implode - объединяет элементы массива.
Первый параметр - разделитель , в данном случае - пробел(' '),
Второй параметр - массив ($data).
<?php
$data = [ 'Иванов' , 'Иван' , 'Иванович' ];
$str = ( ' ' , $data );
echo $str ;
// выведет:
// Иванов Иван Иванович
$str1 = (',', $data ); // здесь разделитель - запятая
echo $str1 ;
// выведет:
// Иванов,Иван,Иванович
?>
trim
Функция trim - по концам строки удаляет ряд символов.
Чаще всего ее используют для удаления пробелов в начале строки и в конце строки и для удаления других пробельных символов, их называют - непечатными символами: обычный пробел, символ табуляции, перевод строки, возврат каретки др.
Первый параметр - строка ($str ).
Второй ,необязательный параметр, в нем указываем те символы , которые хотим удалить .
<?php
$str = "\n < p>Hello < /p>\n ";
$str .= "\n < p>world! < /p> \t\n";
// - (.=) - оператор конкатенации (вторая строка будет дописана к первой)
echo $str ;
echo ($str );
// выведет:
// Hello
// world!
// в исходном коде страницы будет виден результат работы функции trim
?>
Функция trim часто используется для обработки данных, которые приходят от пользователя .
rtrim
ltrim
Функции rtrim и ltrim - удаляют непечатные символы соответственно справа строки и слева строки. Используются они значительно реже, чем функция trim.
<?php
$str = '........test,';
// (',') - указываем, какой символ надо обрезать
echo ($str , ',');
// выведет:
// ........test - без запятой. (можно использовать - rtrim )
?>
nl2br
nl2br - данная функция заменяет перевод строк (\r\n, \n\r, \n и \r) на <br> или <br/> Применяется для текстовых областей, куда пользователь вводит, например, коментарии и т. д.
<?php
$str = "Hello\nworld\n";
echo $str ;
// выведет:
// Hello world (в одну строку)
echo ($str );
// выведет:
// Hello (с переводом строки)
// world
?>
str_replace
str_replace - эта функця имеет три обязательных параметра и один - необязательный. Она ищет что-то в строке, указанной третьим параметром, ищет то, что указано в первом параметре, и это что-то она может заменить на то, что указано во втором параметре. Особенность этой функции заключается в том , что она может искать не только в строке, но и в массиве.
<?php
$str = 'Привет! Меня зоват [b]Вася[/b]!';
echo $str ;
// выведет:
// Привет! Меня зовут [b]Вася[/b]!
// обработаем строку $str функцией str_replace ([b])
$str = ('[b]', '<b>', $str );
// то-же самое для закрывающего тэга ([/b])
$str = ('[/b]', '</b>', $str );
echo $str ;
// выведет:
// Меня зовут Вася! (Вася - жирным щрифтом)
?>
- ищем [b] в строке $str и заменяем на <b>
- ищем [/b] в строке $str и заменяем на </b>
str_replace может работать не только с отдельными символами, но и с целым массивом символов. Соответствующие позиции элементов должны совпадать.
<?php
$str = '[i]Привет[/i]! Меня зовут [b]Вася[/b]!';
$search = ['[b]', '[/b]', '[i]', '[/i]']; // что мы будем замещать
$replace = ['<b>' , '</b>', '<i>', '</i>']; // на что мы будем замещать
$str = ( $search , $replace , $str );
echo $str ;
// выведет:
// Привет! Меня зоват Вася! (Привет - курсивом, Вася - жирным шрифтом)
?>
str_ireplace
str_ireplace - является аналогом функции str_replace, за исключением того, что она работает без учета регистра, в отличии от str_replace.
strip_tags
strip_tags - у этой функции первый параметр обязателен, здесь указывается строка.
Второй параметр - опциональный, здесь указываются определенные тэги, которые мы не хотим удалять.
Необработанный коментарий пользователя:
<?php
$str = '<i>Привет </i>! Меня зоват <b>Вася </b>! <sсript> alert("XSS") </script>';
echo ( $str , '<b> <i>'); // разрешаем <b> и <i>
// в результате работы функции strip_tags, будут вырезаны все HTML-тэги кроме тэгов <b> и </b>, <i> и </i>
?>
strlen
strlen - эта функция возвратит количество байт, а не число символов в строке.
<?php
$str = 'hello';
echo ( $str );
// выведет: 5
$str = 'привет' ;
echo ( $str ) ;
// выведет: 12
// в мультибайтовой кодировке(utf-8) - кирилические символы кодируются двумя байтами
?>
mb_strlen
mb_strlen - получает длину строки при работе с многобайтовыми строками
Эта функция корректно отработает и с мультибайтными строками, то есть со строкой
в кодировке utf-8.
Первый параметр - строка - обязательный.
Второй - опциональный - этот параметр представляет собой символьную кодировку(utf-8). Если он не указан, вместо него будет использовано значение внутренней кодировки.
<?php
$str = 'hello';
echo ( $str );
// выведет: 5
$str = 'привет' ;
echo ( $str );
// выведет: 6
?>
Для работы с мультибайтными функциями, для их использования необходим специальный модуль. Если при работе с мультибайтными функциями возникает ошибка, то необходимо включить (либо установить) соответсвующее расширение в файле конфигурации PHP.
Файл: ini.php, расширение: extension=php_mbstring.dll - это расширение должно быть раскомментировано.
Если это расширения в фале ini.php не установлено, то его надо взять из файла: OSPanel/modules/php/php(номер версии)/ext.
strpos
mb_strpos
mb_strpos (strpos) - ищет позицию первого вхождения подстроки 'x' в строку $str.
Первый обязательный параметр - строка $str , в которой производится поиск.
Второй обязательный параметр - то, что ищем в данной строке(подстрока 'и').
Третий параметр - опциональный, по умолчанию он равен нулю. Если этот параметр указан, то поиск будет начат с указанного количества символов с начала строки.
Четвертый параметр - опциональный, он представляет собой символьную кодировку. Если он не проставлен, вместо него будет использовано значение внутренней кодировки (в данном случае: 'utf-8').
Первый символ стоит на позиции 0, позиция второго 1 и так далее. Данная функция возвращает либо число - номер позиции в строке, или, если искомая подстрока 'x' не найдена, функция вернет FALSE.
<?php
$str = 'Привет, мир!';
echo ( $str , 'и' ); // ищем букву 'и' в строке $str
// выведет: 2 (Отчет начинается с нуля, соответственно позиция 'и' будет равна 2)
// полная запись: ищем букву 'и' в строке $str, смещение - 0, кодировка - 'utf-8'
echo ( $str , 'и', 0, 'utf-8');
// выведет: 2
echo ( $str , 'и', 3, 'utf-8');
// - сдесь смещение равно - 3, начинаем поиск с символа 3
// выведет: 9
?>
Функцию mb_strpos можно использовать в условиях, мы проверяем, присутствует ли какой-нибудь символ в строке. Если присутствует, тогда мы выполняем какие-нибудь действия.
Если позиция искомого символа находится на нулевой строке:
<?php
$str = 'Привет, мир!';
if ( ( $str , 'П', 0, 'utf-8') !== false ){
// - (!==) - строгое сравнение!!!
echo 'Ok' ;
}else{
echo 'No';
}
// выведет: Ok
?>
strtolower
strtoupper
mb_strtolower
mb_strtoupper
mb_strtolower (strtolower) и mb_strtoupper (strtoupper) - приводят строки соответственно в нижний регистр и в верхний регистр.
Первый параметр - строка, второй (необязательный) - символьная кодировка:
<?php
$str = 'Привет, мир!';
$str2 = 'ПРИВЕТ, МИР!';
echo ( $str ); // перевод в верхний регистр
echo ($str2 , 'utf-8'); // перевод в нижний регистр
?>
substr
mb_substr
mb_substr (substr) - данная функция позволяет получить из строки подстроку, то есть взять только нужную часть строки.
Обязательный параметр $str - исходная строка для получения подстроки.
Второй обязательный параметр - с какого символа мы начинаем брать нашу строку (позиция первого символа - ноль), может быть отрицательным (нумерация начинается с конца строки).
Третий параметр опциональный - это максимальное количество символов возвращаемой из $str подстроки. Если не указан или равен NULL - извлекаются все символы до конца строки.
Четвертый параметр опциональный - представляет собой символьную кодировку
<?php
$str = 'Привет, мир!';
// взяли строку с нулевого символа
echo ( $str , 0);
// выведет: Привет, мир!
// взяли строку с первого символа
echo ( $str , 1);
// выведет: ривет, мир!
// взяли строку со второго символа
echo ( $str , 2, NULL , 'utf-8');
// выведет: ивет, мир!
// взяли строку с восьмого символа
echo ( $str , 8 , NULL ,'utf-8');
// выведет: мир!
// взяли строку с восьмого символа и взять нам нужно три символа
echo ( $str , 8, 3, 'utf-8');
// выведет: мир (без восклицательного знака)
// второй параметр - отрицательный!
echo ( $str , -4, 3, 'utf-8');
// выведет: мир (без восклицательного знака)
// второй параметр - отрицательный!
echo ( $str , -4, 2, 'utf-8');
// выведет: ми
?>
htmlspecialchars
htmlspecialchars - эта функция не только покажет код, при этом он не отработает, но она еще защитит нашу страницу, наш сайт от той самой XSS-уязвимости, от встраивании стороннего кода.
Первый параметр обязательный - конвертируемая строка ($str).
Второй параметр опциональный - битовая маска из нижеуказанных флагов, определяющих режим обработки кавычек, некорректных кодовых последовательностей и используемый тип документаю. Флаг ENT_QUOTES - преобразует как двойные, так и одинарные кавычки.
Третий необязательный параметр - аргумент, определяющий кодировку, используемую при конвертации симоволов.
Четвертый параметр - если он выключен, то PHP не будет преобразовывать существующие html-сущности.
По умолчанию преобразуется все без ограничений.
<?php
$str = '& < h1>< i>Привет </i>! Меня зовут < b>Вася </b>! </h1>< iframe> src = "http://webformyself.com" </iframe>< script>alert(\'XSS\') </script>';
echo ($str );
// - в иходном коде одинарные кавычки не будут преобразованны
// отобразится весь код, но при этом он не отработает (все символы заменены на html-сущности)
// исходный код:
// .........
echo ( $str , );
// в исходном коде одинарные кавычки будут преобразованны
// исходный код:
// ............
echo ( $str ,
htmlspecialchars_decode
htmlspecialchars_decode - эта функция по сути антипод функции htmlspecialchars.
<?php
$str = ' строка из исходного кода '
echo
отработанный код функции htmlspecialchars_decode( $str ):
htmlentities
htmlentities - по сути эта функции аналог htmlspecialchars, за исключением того, что она преобразует все символы в соответствующие HTML-сущности.
Наверх Наверх