От автора: в этой статье мы рассмотрим основные функции PHP для работы со строками.
Т.к. практически все CMS (может Ваши самописные или чьи-то типа free) работают с базами данных, то нам предстоит вплотную работать со строковыми переменными. Возможно, нужно будет где-то заменить определенный участок текста на другой текст. Или вставить в середине (в начала или в конце) какой-то статьи определенный тест.
Без базовых знаний работы с функциями строк в PHP мы ничего из выше перечисленных и многих других операций сделать не сможем.
Для начала мы изучим простой поиск и замену в строке.
Функция 1
Есть такая простая php функция substr_count(), которая считает количество подстрок в строке. Например, есть такая строка: «бетон и железобетон», наша цель найти кол-во подстрок «бетон». Функция вернет значение 2 (ибо найдет 2 подстроки, выделенные жирным шрифтом).

Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Получить курс сейчас!Пример:
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 ' |
‘;
?>
б) По предложениям

Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Получить курс сейчас! 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. Хотите опубликовать интересный тематический материал и заработать? Если ответ «Да», то жмите сюда.

Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Получить курс сейчас!
Разработка веб-приложения на PHP
Создайте веб-приложение на PHP на примере приема платежей на сайте
Смотреть
Сложно это все для начинающих, Да и практическое приминение узкое.
А кто сказал, что у наc все для начинающих? А кто сказал, что будет легко там, где хочешь стать «мастером»?
А кто будет изучать основы?
Не обязательно запоминать эти функции досконально, нужно просто знать что они есть и при необходимости заглянуть в хелп или просто в поисковике вбить то что нужно, благо в интернете много всего
Работы со строками как раз для начинающих! Тут все легко
просто надо подумать головой!
php — вещь! Потихоньку его, помаленьку, но проясняется же! А штука интересная.
Дальше будет больше! Не переключайтесь, оставайтесь с нами:)
не понял, в чем суть статьи. просто переписанная справка по функциям, доступная на оффсайте
Спасибо за помощь.
Лучше бы вы сделали видеоурок по этой теме и стрелочками всё обвели, показали, объяснили голосом каждый элемент кода, где это можно применить. Иначе для многих такой материал не пригоден каким бы хорошим он не был.
Поддерживаю Алексея! В живую будет гораздо эффективнее. А вообще — огромное спасибо за Вашу работу.
Мысль поняли. Будем стараться делать авторские видео уроки.
Алексей, такой материал гораздо больше даёт чем «сухой» мануал, думаю немного попрактиковавшись вы всё осилите
И еще! благодаря Вам я сумел поставить фавку на свой блог. Спаси Господь.
Огромное СПАСИБО за видеоурок с фавиконом
Большое спасибо.Это очень интересно и ценно, но я ещё до этого не дорос.Спрячу в отдельную папку до лучших времён. Вадим.
Я начинающий ,создаю сайты простенькие. Я понимаю что материал может быть и нужный для продвинутых.Но честно я ничего не понял.Зачем все это? К чему все это? Хоть бы в начале дали практические применения этих функций.Думаю для меня это пока неприемлемо.
У кого strtolower() понижает регистр -если используется кириллица?
Спасибо за интересную и полезную иеформацию, но применить ее в данный момент не могу. Думаю применять ее позже.
Не понимаю для кого этот урок. Для программистов это очень просто достаточно заглянуть в любой справочник там все это есть. А для начинающих это сложно. Я сам когда-то начинал изучать PHP и не мог понять для чего нужны эти переменные, массивы, функции, классы. И только начиная создавать сначала простые а потом все более сложные проекты я начинал понимать полезность всего этого. Начинать нужно с основ.
Тем более строковые функции для создания простых сайтов не нужны. Помню применял их для парсинга xml файлов. Но новичкам думаю это точно не нужно.
Здравствуйте. Спасибо за статью , но есть один вопрос, он немного не по теме ,
искать ответ в поисковиках замучился …
Например, есть форма по отправке комментариев, текст отправляется скрипту(php) — потом записывается в бд, грубо говоря, после просмотра комментария администратором , сообщение пропускается в общий обзор на странице. Как сохранить Энтеры (Enter) которые ставил пользователь , когда писал комментарий, т.е. при выводе на экран чтоб сообщение выглядело Абзацами также, как его задумывал Автор комментария?
Во втором предложении своего сообщения я поставил «Enter» после » по теме, » мб у вас на сайте это тоже реализовано…
Обрабатывай текст функцией nl2br() — она заменяет переносы на тег
Просто шикарно ! Благодарю
Спасибо, но если честно ничего не поняла.
Присоединяюсь к Светлане — я ничего не поняла.
1. Женщинам-новичкам нужно объяснять с помощью пошагового ВИДЕО
2. Использовать термины с обязательной расшифровкой на понятном русском языке
3.Каждая из нас должна четко понимать, для чего ей это нужно, т.е. ВЫГОДЫ применения того, что Вы нам даете
4. Каждый термин на английскои должен быть и переведен, и растолкован.
Спасибо, конечно. за заботу о нашем просвещении, но …. обучающие курсы я не решаюсь купить именно потому, что боюсь увидеть то же, что увидела в этом уроке.
Вот как раз-таки в обучающем курсе все с нуля и в видео формате.
Согласен, что знание PHP нужно! Но для новичка конечно это неприемлемо. Новичку не для чего самому создавать сайт на PHP. Для начала пойдёт и HTML, более проще или на CMS движке (который кстати на PHP). А со временем, когда новичок начнёт понимать и разбираться в построении сайтов, то тогда он сам придёт к PHP. Затем к JavaScript, затем к JQuvery… Всё зависит от того, будет ли новичок развиваться далее, или его устроит простой HTML сайт, или сайт на CMS движке….
Вот бы в этом всем разобраться! А так записываю в зыкладки. При надобности еще раз пройдусь. А не получится — буду Вам писать и просить помощи.
Доброго времени всем и отличного нового года!! Информацию получила в достаточной мере перехожу к практике,Вадим,Андре может подскажите ,что надо сделать,чтобы изменить название блога,что-то не справилась. Вы сможете через экран скайпа,мой
SK- Gusvetlana подсказать,буду благодарна,очень! Спасибо
Это делается из админки блога. У вас как я посмотрел на вордпресе блог висит. Заходите в админку, далее — «параметры» — «общие». Там меняете заголовок блога и краткое описание. Вот и все. Зачем так сложно- через экран скайпа, тут все в три клика решается))))
Удачи!
Ого! и это все нужно выучить?
Учить не обязательно. Главное знать, что такие возможности у языка есть. И в нужный момент вы сможете посмотреть их в help-е по PHP.
Всем здрасти ! Я новичек, хочу сделать несколько простых сайтов для себя. И если честно то нет никакого желания убивать месяцы своего времени на изучение этих примудростей. Разве нет способа попроще ? Спасибо большое за уроки, но думаю ,что они вряд ли для новичка , не понял из прочитанного ровным счетом ничего!!!
Есть способ: курс«Киберсант-вебмастер»
Изучаем функции PHP для работы со строками. Часть 1…..
. Со всеми этими проблемами вы столкнётесь сами, и, надеюсь, выход тоже найдете сами. Это и будет вашим прогрессом. Так зачем пишите что ИЗУЧАЕМ.? Надо писать : просто тупо сами учите и все…