От автора: в этой статье мы рассмотрим основные функции PHP для работы со строками.
Т.к. практически все CMS (может Ваши самописные или чьи-то типа free) работают с базами данных, то нам предстоит вплотную работать со строковыми переменными. Возможно, нужно будет где-то заменить определенный участок текста на другой текст. Или вставить в середине (в начала или в конце) какой-то статьи определенный тест.
Без базовых знаний работы с функциями строк в PHP мы ничего из выше перечисленных и многих других операций сделать не сможем.
Для начала мы изучим простой поиск и замену в строке.
Функция 1
Есть такая простая php функция substr_count(), которая считает количество подстрок в строке. Например, есть такая строка: «бетон и железобетон», наша цель найти кол-во подстрок «бетон». Функция вернет значение 2 (ибо найдет 2 подстроки, выделенные жирным шрифтом).
Пример:
1 2 3 4 5 6 7 |
<?php $string = '"Beton i zhelezobeton ispolzuiut na stroike"'; //Пишу транслитом, потому что ф-ция strtolower работает только с латинницой. // ф-ция substr_count() регистрозависима, поэтому всю строку нужно привести до одного регистра и работать с ней echo $string.'<br>'; $string = strtolower($string); // трансформируем в нижний регистр, надеюсь здесь все ясно. echo ' Текст beton встречается '.substr_count($string,'beton').' раза в строке выше'; //находит 2 соответствия!!! ?> |
Функция 2
Такая же по сложности php функция str_replace() — операция замена одного слова (или нескольких слов, или даже предложений) на другое.
Пример:
1 2 3 4 5 6 |
<?php $string = 'Особенности национальной охоты'; echo $string.'<br>'; $string = str_replace('охоты', 'рыбалки', $string); //производим замену слова "охоты" на слово "рыбалки" echo $string.'<br>'; ?> |
Функция 3
Вдруг нам нужно будет выделить в строке несколько символов подряд ,например, со второго по десятый символ в строке. В этом нам поможет php функция substr().
1 2 3 4 5 |
<?php $string = 'Особенности национальной охоты'; $string2 = substr($string,0,11); //выбираем из строки символы с 0 позиции, кол-во выбранных символов = 11 (длинна слова "Особенности") echo $string2.'<br>'; ?> |
Замечание: функция неадекватно работает с кодировкой файла в UTF8.
У этой функции есть и, скажем так, обратная сторона медали. Можно также выделять символы с конца строки. Для этого нужно ставить значение исходного положения символа, с которого начинается выделение, отрицательным.
Пример: выберем слово «охоты»:
1 2 3 4 5 |
<?php $string = 'Особенности национальной охоты'; $string2 = substr($string,-5); //выбираем из строки символы с 0 позиции, если не указать третий параметр (сколько символов выберать), то выбор пойдет до конца строки echo $string2.'<br>'; // выведет на экран «охоты» ?> |
Функция 4
Любую строку можно экспортировать (превратить) в массив, элементами которого могут быть как слова, так и предложения. Для этого в php существует функция explode().
Рассмотрим несколько примеров:
a) Разобьем строку по словам.
1 2 3 4 5 6 7 8 |
<?php $string = 'Особенности национальной охоты и особенности национальной рыбалки'; echo $string.'<br>'; $wordsArray = array(); $wordsArray = explode(' ', $string); echo '<pre>'; print_r($wordsArray); echo ' |
’;
?>
б) По предложениям
1 2 3 4 5 6 7 8 |
<?php $string = 'Два Фильма. Особенности национальной охоты. Особенности национальной рыбалки'; echo $string.'<br>'; $wordsArray = array(); $wordsArray = explode('. ', $string); echo '<pre>'; print_r($wordsArray); echo ' |
’;
?>
Так же это пункт статьи имеет обратную операцию. Из массива образовать строку. Допустим, мы имеем массив вида:
1-й элемент: Hello
2-й: «пробел»
3-й: World
…при помощи функции implode() массив преобразуется в строку такого вида: «Hello World», где 2-й элемент массива есть пробелом между словами Hello и World.
Рассмотрим расширенный вариант предыдущего примера:
1 2 3 4 5 6 7 8 |
<?php $string = 'Два Фильма. Особенности национальной охоты. Особенности национальной рыбалки'; echo $string.'<br>'; $wordsArray = array(); $wordsArray = explode('. ', $string); echo '<pre>'; print_r($wordsArray); echo ' |
’;
echo ‘
‘;
$string = implode(‘. ‘, $wordsArray);
echo ‘обратно склеенная строка: ‘.$string.’
‘;
?>
Функция 5
Допустим, мы имеем строку, в которой с определенного символа
(включительно) и до конца строки нужно извлечь текст. Например, мы
имеем строку «//www.webformyself.com/», а нам нужно извлечь из нее
только «www.webformyself.com/». Смотрим, как это можно реализовать. Для этого нам понадобится функция strstr().
1 2 3 4 5 |
<?php $url = '//www.webformyself.com/'; $domain = strstr($url, 'w'); echo $domain; // выведет - www.webformyself.com/ ?> |
Замечание: с этой функцией можно далеко не такие простые вещи делать.
Функция 6
Функция strpos() находит позицию первого вхождения строки и
возвращает число (номер позиции в строке).
Пример:
1 2 3 4 5 |
<?php $string = 'Найти позицию цифры 3'; $threePos = strpos($string, '3'); echo $threePos; // выведет на экран: 20, можете посчитать ?> |
strrpos() находит позицию последнего вхождения строки.
Вот и закончился мой основной джентльменский набор функций по работе со строками. Ждите вторую часть с более сложными примерами. Этих же функций в комплексном применении + несколько новых 🙂
Бонус
А теперь бонусное приложение: комплексное применение всех изученных сегодня в статье функций по работе со строками в PHP.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $params = 'limit=1;offset=10;page=3;title=WEBForMySelf'; echo 'Параметры заданные в виде строки: <br>'.$params.'<br><br>'; $paramsArray = array(); $paramsArray = explode(';',$params); $sortedParams = array(); foreach ($paramsArray as $param){ $paramName = substr($param,0,strpos($param,'=')); $paramValue = substr($param, strpos($param,'=')+1); $sortedParams[$paramName] = $paramValue; } echo 'Параметры заданные в виде массива, что существенно облегчает работу с ними: <br>' ; echo '<pre>'; print_r($sortedParams); echo ' |
’;
?>
Попробуйте сами разобрать каждую строчку кода.
Заключение
В этой статье мы ознакомились только с основными функциями языка PHP по работе со строками, и далеко не все они дружелюбны с кириллицей. Поэтому для некоторых нужно будет писать свою модификацию или найти в инете готовую. Со всеми этими проблемами вы столкнётесь сами, и, надеюсь, выход тоже найдете сами. Это и будет вашим прогрессом.
Читайте в следующей статье на эту тему о комплексном применении и новых функциях.
Автор: Влад Паук
Редакция: Рог Виктор и Андрей Бернацкий. Команда webformyself.
E-mail: contact@webformyself.com
Проект webformyself.com — Как создать свой сайт. Основы самостоятельного сайтостроения
P.S. Хотите опубликовать интересный тематический материал и заработать? Если ответ «Да», то жмите сюда.
Комментарии (33)