Функции работы со строками в 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 = explode(' ', $str ) ;
print_r ( $data );
echo $data [0 ]; // обращение к элементу массива $data
echo $data [1];
echo $data [2];

// выведет:
// Array ( [0] => Иванов [1] => Иван [2] => Иванович )
// Иванов
// Иван
// Иванович

$data1 = explode (' ' , $str , 1); // один элемент в массиве
print_r ($data1 );
$data2 = explode (' ', $str , 2); // два элемента в массиве
print_r ($data2 );

// выведет:
// Array ( [0] => Иванов Иван Иванович ) - один элемент в массиве
// Array ( [0] => Иванов [1] => Иван Иванович ) - два элемента в массиве
?>




implode




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

Первый параметр - разделитель , в данном случае - пробел(' '),

Второй параметр - массив ($data).


<?php
$data = [ 'Иванов' , 'Иван' , 'Иванович' ];
$str = implode ( ' ' , $data );
echo $str ;

// выведет:
// Иванов Иван Иванович

$str1 = implode (',', $data ); // здесь разделитель - запятая
echo $str1 ;

// выведет:
// Иванов,Иван,Иванович
?>




trim




Функция trim - по концам строки удаляет ряд символов.

Чаще всего ее используют для удаления пробелов в начале строки и в конце строки и для удаления других пробельных символов, их называют - непечатными символами: обычный пробел, символ табуляции, перевод строки, возврат каретки др.

Первый параметр - строка ($str ).

Второй ,необязательный параметр, в нем указываем те символы , которые хотим удалить .


<?php
$str = "\n < p>Hello < /p>\n ";
$str .= "\n < p>world! < /p> \t\n";
// - (.=) - оператор конкатенации (вторая строка будет дописана к первой)

echo $str ;
echo trim ($str );

// выведет:
// Hello
// world!
// в исходном коде страницы будет виден результат работы функции trim
?>



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



rtrim


ltrim




Функции rtrim и ltrim - удаляют непечатные символы соответственно справа строки и слева строки. Используются они значительно реже, чем функция trim.


<?php
$str = '........test,';

// (',') - указываем, какой символ надо обрезать
echo trim ($str , ',');

// выведет:
// ........test - без запятой. (можно использовать - rtrim )
?>




nl2br




nl2br - данная функция заменяет перевод строк (\r\n, \n\r, \n и \r) на <br> или <br/> Применяется для текстовых областей, куда пользователь вводит, например, коментарии и т. д.


<?php
$str = "Hello\nworld\n";
echo $str ;

// выведет:
// Hello world (в одну строку)

echo nl2br ($str );

// выведет:
// Hello (с переводом строки)
// world
?>




str_replace




str_replace - эта функця имеет три обязательных параметра и один - необязательный. Она ищет что-то в строке, указанной третьим параметром, ищет то, что указано в первом параметре, и это что-то она может заменить на то, что указано во втором параметре. Особенность этой функции заключается в том , что она может искать не только в строке, но и в массиве.


<?php
$str = 'Привет! Меня зоват [b]Вася[/b]!';
echo $str ;
// выведет:
// Привет! Меня зовут [b]Вася[/b]!

// обработаем строку $str функцией str_replace ([b])
$str = str_replace ('[b]', '<b>', $str );

// то-же самое для закрывающего тэга ([/b])
$str = str_replace ('[/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 = str_replace ( $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 strip_tags ( $str , '<b> <i>'); // разрешаем <b> и <i>

// в результате работы функции strip_tags, будут вырезаны все HTML-тэги кроме тэгов <b> и </b>, <i> и </i>
?>




strlen




strlen - эта функция возвратит количество байт, а не число символов в строке.


<?php
$str = 'hello';
echo strlen ( $str );
// выведет: 5

$str = 'привет' ;
echo strlen( $str ) ;
// выведет: 12
// в мультибайтовой кодировке(utf-8) - кирилические символы кодируются двумя байтами
?>




mb_strlen




mb_strlen - получает длину строки при работе с многобайтовыми строками
Эта функция корректно отработает и с мультибайтными строками, то есть со строкой в кодировке utf-8.

Первый параметр - строка - обязательный.

Второй - опциональный - этот параметр представляет собой символьную кодировку(utf-8). Если он не указан, вместо него будет использовано значение внутренней кодировки.


<?php
$str = 'hello';
echo mb_strlen ( $str );
// выведет: 5

$str = 'привет' ;
echo mb_strlen( $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 mb_strpos ( $str , 'и' ); // ищем букву 'и' в строке $str
// выведет: 2 (Отчет начинается с нуля, соответственно позиция 'и' будет равна 2)

// полная запись: ищем букву 'и' в строке $str, смещение - 0, кодировка - 'utf-8'
echo mb_strpos ( $str , 'и', 0, 'utf-8');
// выведет: 2

echo mb_strpos ( $str , 'и', 3, 'utf-8');
// - сдесь смещение равно - 3, начинаем поиск с символа 3
// выведет: 9
?>



Функцию mb_strpos можно использовать в условиях, мы проверяем, присутствует ли какой-нибудь символ в строке. Если присутствует, тогда мы выполняем какие-нибудь действия.

Если позиция искомого символа находится на нулевой строке:


<?php
$str = 'Привет, мир!';
if ( mb_strpos ( $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 mb_strtoupper ( $str ); // перевод в верхний регистр
echo mb_strtolower ($str2 , 'utf-8'); // перевод в нижний регистр
?>




substr


mb_substr




mb_substr (substr) - данная функция позволяет получить из строки подстроку, то есть взять только нужную часть строки.

Обязательный параметр $str - исходная строка для получения подстроки.

Второй обязательный параметр - с какого символа мы начинаем брать нашу строку (позиция первого символа - ноль), может быть отрицательным (нумерация начинается с конца строки).

Третий параметр опциональный - это максимальное количество символов возвращаемой из $str подстроки. Если не указан или равен NULL - извлекаются все символы до конца строки.

Четвертый параметр опциональный - представляет собой символьную кодировку


<?php
$str = 'Привет, мир!';

// взяли строку с нулевого символа
echo mb_substr ( $str , 0);
// выведет: Привет, мир!

// взяли строку с первого символа
echo mb_substr ( $str , 1);
// выведет: ривет, мир!

// взяли строку со второго символа
echo mb_substr ( $str , 2, NULL , 'utf-8');
// выведет: ивет, мир!

// взяли строку с восьмого символа
echo mb_substr ( $str , 8 , NULL ,'utf-8');
// выведет: мир!

// взяли строку с восьмого символа и взять нам нужно три символа
echo mb_substr ( $str , 8, 3, 'utf-8');
// выведет: мир (без восклицательного знака)

// второй параметр - отрицательный!
echo mb_substr ( $str , -4, 3, 'utf-8');
// выведет: мир (без восклицательного знака)

// второй параметр - отрицательный!
echo mb_substr( $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 htmlspecialchars ($str );
// - в иходном коде одинарные кавычки не будут преобразованны
// отобразится весь код, но при этом он не отработает (все символы заменены на html-сущности)
// исходный код:
// &amp; .........

echo htmlspecialchars ( $str , ENT_QUOTES );
// в исходном коде одинарные кавычки будут преобразованны
// исходный код:
// &amp;............

echo htmlspecialchars ( $str , ENT_QUOTES, 'utf-8', false );
// последний параметр выключен
// исходный код:
// & .............

?>




htmlspecialchars_decode




htmlspecialchars_decode - эта функция по сути антипод функции htmlspecialchars.


<?php
$str = ' строка из исходного кода '
echo htmlspecialchars_decode ( $str );

// код отработает
?>



отработанный код функции htmlspecialchars_decode( $str ):


str1




htmlentities




htmlentities - по сути эта функции аналог htmlspecialchars, за исключением того, что она преобразует все символы в соответствующие HTML-сущности.






Наверх Наверх