Изучаем функции PHP для работы со строками. Часть 1

работа со строками

От автора: в этой статье мы рассмотрим основные функции PHP для работы со строками.

Т.к. практически все CMS (может Ваши самописные или чьи-то типа free) работают с базами данных, то нам предстоит вплотную работать со строковыми переменными. Возможно, нужно будет где-то заменить определенный участок текста на другой текст. Или вставить в середине (в начала или в конце) какой-то статьи определенный тест.

Без базовых знаний работы с функциями строк в PHP мы ничего из выше перечисленных и многих других операций сделать не сможем.


Для начала мы изучим простой поиск и замену в строке.

Функция 1

Есть такая простая php функция substr_count(), которая считает количество подстрок в строке. Например, есть такая строка: «бетон и железобетон», наша цель найти кол-во подстрок «бетон». Функция вернет значение 2 (ибо найдет 2 подстроки, выделенные жирным шрифтом).

Пример:

<?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() — операция замена одного слова (или нескольких слов, или даже предложений) на другое.

Пример:

<?php
$string = 'Особенности национальной охоты';
echo $string.'<br>';
$string = str_replace('охоты', 'рыбалки', $string); //производим замену слова "охоты" на слово "рыбалки"
echo $string.'<br>';
?>

работа со строками

Функция 3

Вдруг нам нужно будет выделить в строке несколько символов подряд ,например, со второго по десятый символ в строке. В этом нам поможет php функция substr().

<?php
$string = 'Особенности национальной охоты';
$string2 = substr($string,0,11); //выбираем из строки символы с 0 позиции, кол-во выбранных символов = 11 (длинна слова "Особенности")
echo $string2.'<br>';
?>

работа со строками

Замечание: функция неадекватно работает с кодировкой файла в UTF8.

У этой функции есть и, скажем так, обратная сторона медали. Можно также выделять символы с конца строки. Для этого нужно ставить значение исходного положения символа, с которого начинается выделение, отрицательным.

Пример: выберем слово «охоты»:

<?php
$string = 'Особенности национальной охоты';
$string2 = substr($string,-5); //выбираем из строки символы с 0 позиции, если не указать третий параметр (сколько символов выберать), то выбор пойдет до конца строки
echo $string2.'<br>'; // выведет на экран «охоты»
?>

Функция 4

Любую строку можно экспортировать (превратить) в массив, элементами которого могут быть как слова, так и предложения. Для этого в php существует функция explode().

Рассмотрим несколько примеров:

a) Разобьем строку по словам.

<?php
$string = 'Особенности национальной охоты и особенности национальной рыбалки';
echo $string.'<br>';
$wordsArray = array();
$wordsArray = explode(' ', $string);
echo '<pre>';
print_r($wordsArray);
echo '</pre>';
?>

работа со строками

б) По предложениям

<?php
$string = 'Два Фильма. Особенности национальной охоты. Особенности национальной рыбалки';
echo $string.'<br>';
$wordsArray = array();
$wordsArray = explode('. ', $string);
echo '<pre>';
print_r($wordsArray);
echo '</pre>';
?>

работа со строками

Так же это пункт статьи имеет обратную операцию. Из массива образовать строку. Допустим, мы имеем массив вида:

1-й элемент: Hello

2-й: «пробел»

3-й: World

…при помощи функции implode() массив преобразуется в строку такого вида: «Hello World», где 2-й элемент массива есть пробелом между словами Hello и World.

Рассмотрим расширенный вариант предыдущего примера:

<?php
$string = 'Два Фильма. Особенности национальной охоты. Особенности национальной рыбалки';
echo $string.'<br>';
$wordsArray = array();
$wordsArray = explode('. ', $string);
echo '<pre>';
print_r($wordsArray);
echo '</pre>';
echo '<br>';
$string = implode('. ', $wordsArray);
echo 'обратно склеенная строка: '.$string.'<br>';
?>

работа со строками

Функция 5

Допустим, мы имеем строку, в которой с определенного символа
(включительно) и до конца строки нужно извлечь текст. Например, мы
имеем строку «http://www.webformyself.com/», а нам нужно извлечь из нее
только «www.webformyself.com/». Смотрим, как это можно реализовать. Для этого нам понадобится функция strstr().

<?php
$url = 'http://www.webformyself.com/';
$domain = strstr($url, 'w');
echo $domain; //  выведет - www.webformyself.com/
?>

Замечание: с этой функцией можно далеко не такие простые вещи делать.

Функция 6

Функция strpos() находит позицию первого вхождения строки и
возвращает число (номер позиции в строке).

Пример:

<?php
$string = 'Найти позицию цифры 3';
$threePos = strpos($string, '3');
echo $threePos; // выведет на экран: 20, можете посчитать
?>

strrpos() находит позицию последнего вхождения строки.

Вот и закончился мой основной джентльменский набор функций по работе со строками. Ждите вторую часть с более сложными примерами. Этих же функций в комплексном применении + несколько новых :)

Бонус

А теперь бонусное приложение: комплексное применение всех изученных сегодня в статье функций по работе со строками в PHP.

<?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 '</pre>';
?>

работа со строками

Попробуйте сами разобрать каждую строчку кода.

Заключение

В этой статье мы ознакомились только с основными функциями языка PHP по работе со строками, и далеко не все они дружелюбны с кириллицей. Поэтому для некоторых нужно будет писать свою модификацию или найти в инете готовую. Со всеми этими проблемами вы столкнётесь сами, и, надеюсь, выход тоже найдете сами. Это и будет вашим прогрессом.

Читайте в следующей статье на эту тему о комплексном применении и новых функциях.

киберсант-вебмастер

Автор: Влад Паук

Редакция: Рог Виктор и Андрей Бернацкий. Команда webformyself.

E-mail: contact@webformyself.com

Проект webformyself.com — Как создать свой сайт. Основы самостоятельного сайтостроения

P.S. Хотите опубликовать интересный тематический материал и заработать? Если ответ «Да», то жмите сюда.

Курс по программированию на языке PHP

Изучите PHP с нуля до результата!

Смотреть курс

Метки: , ,

Комментарии Вконтакте:

Комментарии Facebook:

Комментарии (33)

  1. Андрей

    Сложно это все для начинающих, Да и практическое приминение узкое.

    • Виктор Рог

      А кто сказал, что у наc все для начинающих? А кто сказал, что будет легко там, где хочешь стать «мастером»?

      А кто будет изучать основы?
      :)

    • Александр

      Не обязательно запоминать эти функции досконально, нужно просто знать что они есть и при необходимости заглянуть в хелп или просто в поисковике вбить то что нужно, благо в интернете много всего :)

    • Руслан

      Работы со строками как раз для начинающих! Тут все легко :) просто надо подумать головой!

  2. Евгений

    php — вещь! Потихоньку его, помаленьку, но проясняется же! А штука интересная.

  3. Сергей

    не понял, в чем суть статьи. просто переписанная справка по функциям, доступная на оффсайте :(

  4. Константин

    Спасибо за помощь.

  5. Алексей

    Лучше бы вы сделали видеоурок по этой теме и стрелочками всё обвели, показали, объяснили голосом каждый элемент кода, где это можно применить. Иначе для многих такой материал не пригоден каким бы хорошим он не был.

  6. Отец Виктор

    Поддерживаю Алексея! В живую будет гораздо эффективнее. А вообще — огромное спасибо за Вашу работу.

  7. Александр

    Алексей, такой материал гораздо больше даёт чем «сухой» мануал, думаю немного попрактиковавшись вы всё осилите :)

  8. Отец Виктор

    И еще!
    Огромное СПАСИБО за видеоурок с фавиконом благодаря Вам я сумел поставить фавку на свой блог. Спаси Господь.

  9. Вадим

    Большое спасибо.Это очень интересно и ценно, но я ещё до этого не дорос.Спрячу в отдельную папку до лучших времён. Вадим.

  10. Александр

    Я начинающий ,создаю сайты простенькие. Я понимаю что материал может быть и нужный для продвинутых.Но честно я ничего не понял.Зачем все это? К чему все это? Хоть бы в начале дали практические применения этих функций.Думаю для меня это пока неприемлемо.

  11. Дима

    У кого strtolower() понижает регистр -если используется кириллица?

  12. Станислав

    Спасибо за интересную и полезную иеформацию, но применить ее в данный момент не могу. Думаю применять ее позже.

  13. Виктор

    Не понимаю для кого этот урок. Для программистов это очень просто достаточно заглянуть в любой справочник там все это есть. А для начинающих это сложно. Я сам когда-то начинал изучать PHP и не мог понять для чего нужны эти переменные, массивы, функции, классы. И только начиная создавать сначала простые а потом все более сложные проекты я начинал понимать полезность всего этого. Начинать нужно с основ.
    Тем более строковые функции для создания простых сайтов не нужны. Помню применял их для парсинга xml файлов. Но новичкам думаю это точно не нужно.

  14. Андрей

    Здравствуйте. Спасибо за статью , но есть один вопрос, он немного не по теме ,
    искать ответ в поисковиках замучился …
    Например, есть форма по отправке комментариев, текст отправляется скрипту(php) — потом записывается в бд, грубо говоря, после просмотра комментария администратором , сообщение пропускается в общий обзор на странице. Как сохранить Энтеры (Enter) которые ставил пользователь , когда писал комментарий, т.е. при выводе на экран чтоб сообщение выглядело Абзацами также, как его задумывал Автор комментария?
    Во втором предложении своего сообщения я поставил «Enter» после » по теме, » мб у вас на сайте это тоже реализовано…

  15. Светлана

    Спасибо, но если честно ничего не поняла.

  16. Галина

    Присоединяюсь к Светлане — я ничего не поняла.

    1. Женщинам-новичкам нужно объяснять с помощью пошагового ВИДЕО
    2. Использовать термины с обязательной расшифровкой на понятном русском языке
    3.Каждая из нас должна четко понимать, для чего ей это нужно, т.е. ВЫГОДЫ применения того, что Вы нам даете
    4. Каждый термин на английскои должен быть и переведен, и растолкован.

    Спасибо, конечно. за заботу о нашем просвещении, но …. обучающие курсы я не решаюсь купить именно потому, что боюсь увидеть то же, что увидела в этом уроке.

  17. Владимир

    Согласен, что знание PHP нужно! Но для новичка конечно это неприемлемо. Новичку не для чего самому создавать сайт на PHP. Для начала пойдёт и HTML, более проще или на CMS движке (который кстати на PHP). А со временем, когда новичок начнёт понимать и разбираться в построении сайтов, то тогда он сам придёт к PHP. Затем к JavaScript, затем к JQuvery… Всё зависит от того, будет ли новичок развиваться далее, или его устроит простой HTML сайт, или сайт на CMS движке….

  18. Василий

    Вот бы в этом всем разобраться! А так записываю в зыкладки. При надобности еще раз пройдусь. А не получится — буду Вам писать и просить помощи.

  19. Светлана Г.

    Доброго времени всем и отличного нового года!! Информацию получила в достаточной мере перехожу к практике,Вадим,Андре может подскажите ,что надо сделать,чтобы изменить название блога,что-то не справилась. Вы сможете через экран скайпа,мой
    SK- Gusvetlana подсказать,буду благодарна,очень! Спасибо

    • Andrey Bernacki

      Это делается из админки блога. У вас как я посмотрел на вордпресе блог висит. Заходите в админку, далее — «параметры» — «общие». Там меняете заголовок блога и краткое описание. Вот и все. Зачем так сложно- через экран скайпа, тут все в три клика решается))))
      Удачи!

  20. Олег

    Ого! и это все нужно выучить?

    • Andrey Bernacki

      Учить не обязательно. Главное знать, что такие возможности у языка есть. И в нужный момент вы сможете посмотреть их в help-е по PHP.

  21. Александр

    Всем здрасти ! Я новичек, хочу сделать несколько простых сайтов для себя. И если честно то нет никакого желания убивать месяцы своего времени на изучение этих примудростей. Разве нет способа попроще ? Спасибо большое за уроки, но думаю ,что они вряд ли для новичка , не понял из прочитанного ровным счетом ничего!!!

    • Виктор Рог

      Есть способ: курс «Киберсант-вебмастер»

      • Татьяна

        Изучаем функции PHP для работы со строками. Часть 1…..
        . Со всеми этими проблемами вы столкнётесь сами, и, надеюсь, выход тоже найдете сами. Это и будет вашим прогрессом. Так зачем пишите что ИЗУЧАЕМ.? Надо писать : просто тупо сами учите и все…

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree