<MyRusakov.ru />

Финансовая грамотность от А до Я

Финансовая грамотность от А до Я

Данный курс в кратчайшие сроки обучит Вас финансовой грамотности. Эти знания позволят Вам получить, как минимум, серьёзную финансовую стабильность, а, как максимум, финансовую независимость.

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

Помимо самого курса Вас ждёт ещё бесплатный ценный Бонус: «Ранний выход на пенсию». В рамках этого Бонуса Вы узнаете, какой должен быть капитал конкретно в Вашем случае, варианты его получения, а также какие есть стратегии вывода капитала на пенсии и где их можно протестировать.

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Строковые функции в PHP

Строковые функции в PHP

Строки - это один из основных типов переменных в PHP. И с ними приходится работать наравне с числами, с булевскими переменными и массивами. Разумеется, разработчики PHP, чтобы облегчить нам работу со строками, уже встроили много готовых функций для нас. И о самых часто используемых мы и поговорим.

Начнём с функции, которую я использую при работе со строками в PHP регулярно - strlen(). Данная функция возвращает длину строки (количество символов в строке):

<?php
  $str = "This is my string";
  echo strlen($str);
?>

Думаю, что данная функция в комментариях не нуждается.

Также имеются две часто используемые строковые функции - это strtolower() и strtoupper(). Эти функции позволяют перевести строку в нижний и верхний регистр соответственно:

<?php
  $str = "This is my string";
  echo strtolower($str)."<br />";
  echo strtoupper($str);
?>

Очень полезная строковая функция - substr(), которая возвращает подстроку из исходной строки:

<?php
  $str = "This is my string";
  echo substr($str, 1)."<br />";
  echo substr($str, 4, 2)."<br />";
?>

Как видите, данная функция может содержать два, либо три параметра. Первый параметр - это исходная строка, второй параметр - это номер символа в исходной строке, который потом станет первым в полученной строке. Обратите внимание: нумерация символов начинается с 0 (то есть в нашем примере, 1-ый символ - "h"). Третий параметр означает длину строки, которую мы хотим получить. Если этот параметр не задан, то возвращается строка, начиная со второго параметра и до конца строки. В общем, смотрите на результат, и Вам всё станет ясно.

Ещё одна полезная строковая функция в PHP - это str_replace(). Как следует из названия, данная функция возвращает строку с заменой какой-то части:

<?php
  $str = "This is my string";
  echo str_replace("my", "your", $str);
?>

На выходе у нас получилась следующая строка: "This is your string". То есть данная функция заменила строку, заданную первым параметром, на строку, заданную вторым параметром, в строке, заданной третьим параметром, и вернула результат.

И последняя функция, которую мы с Вами рассмотрим, - это strpos(). Данная функция ищет вхождение подстроки в строку и возвращает номер первого символа вхождения (напоминаю, что нумерация символов начинается с 0, а не с 1):

<?php
  $str = "This is my string";
  echo strpos($str, "is");
?>

Как видите, данная функция очень простая и очень важная, так как позволяет осуществлять поиск в строке. Также у функции strpos() есть ещё один необязательный параметр, задающий смещение. Напоминаю, что данная функция ищет первое вхождение. Например, в нашем примере "is" встречается в строке дважды, но вернула эта функция номер символа при первом вхождении. Поэтому для того, чтобы получить номера и других вхождений необходимо задавать третий параметр - смещение:

<?php
  $str = "This is my string";
  echo strpos($str, "is", 4);
?>

Таким образом, теперь мы получили номер символа в следующем вхождении. И, напоследок, хочется сказать, что если вхождение не будет найдено, то функция вернёт false. И вот на этом моменте у многих бывают ошибки. Давайте приведу простой пример:

<?php
  $str = "This is my string";
  if (strpos($str, "Th") == false) echo "Строка не найдена";
  else echo "Строка найдена";
?>

Очевидно, что "Th" содержится в исходной строке, и номер символа первого вхождения - это 0. Но если Вы запустите этот скрипт, то увидите, что "строка не найдена". Почему? Если Вы читали статью об операторе эквивалентности, то без проблем ответите на этот вопрос. Однако, если нет, то поясняю. Дело в том, что так как у нас функция strpos() вернула 0, а 0 с точки зрения PHP - это false, то он без проблем сделал вывод о том, что условие истинно (ведь слева false и справа false). Как быть? Ответ прост: воспользоваться оператором эквивалентности (обозначается ===), который сравнивает не только значения (которые в нашем примере равны для PHP), но и их типы:

<?php
  $str = "This is my string";
  if (strpos($str, "Th") === false) echo "Строка не найдена";
  else echo "Строка найдена";
?>

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

Конечно, это далеко не весь набор строковых функций, которые нам предоставили разработчики PHP, но я, исходя из своей практики, привёл Вам список самых часто используемых строковых функций в PHP.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (17):

morozov-semen morozov-semen 04.04.2013 16:58:47

Здравствуйте, Михаил. Подскажите пожалуйста по поводу последнего примера, почему не работает такой пример: $str = "This is my string"; if (strpos($str, "Th") === true) echo "Строка найдена"; else echo "Строка не найдена";

Ответить

Admin Admin 04.04.2013 20:52:16

Потому что strpos возвращает число, а если ничего не найдено, то false.

Ответить

AiLing AiLing 12.04.2013 09:27:05

Не поняла пример со смещением. Как его задать и при чем здесь 4?

Ответить

sanda sanda 18.01.2014 19:21:02

Смещение на x "переносит" начало строки для функции (но не в реальности), поиск будет начинаться не с 0-го, а с х-го символа

Ответить

Spartak_Belarus Spartak_Belarus 19.05.2013 18:55:26

Здравствуйте, Михаил! Функция echo "chr($i)" при $i = от 128 до 255 выводит вопросики�. Кодировка всех файлов UTF-8. Запускаю через денвер. В вашем же уроке аналогичная программа выводит русские буквы. Что можно сделать, чтобы вывести русские буквы? Спасибо!

Ответить

Spartak_Belarus Spartak_Belarus 19.05.2013 19:48:57

Нашел одно объяснение: я использую файл .htaccess в корне, а в нем строка AddDefaultCharset utf-8. Если удалить файл, то chr() выводит русские символы, но вся остальная кириллица на странице превращается в кракозябры. Но, как сделать так, чтобы работало и то и другое???

Ответить

Spartak_Belarus Spartak_Belarus 19.05.2013 20:35:57

Похоже, нашел решение - chr() выдает результат в своей кодировке. Необходимо просто перевести в UTF. Функция такая iconv('windows-1251','utf-8',chr($i)). Михаил, может стоит добавить в уроки PHP хотя бы пару слов про кодировку строк.

Ответить

alexandrdante alexandrdante 18.01.2014 19:23:25

Уважаемый Александр,по возможности,добавит P.s. что у вас за интересная ава?) зачем оба флага и оба герба?)

Ответить

Олег Олег 05.10.2013 19:58:54

Михаил привет. $menu = $this->menu2->getAll(); Хочу чтоб цифра 2 менялась в зависимости от входного параметра. $menu = $this->menu.$sr_duble->getAll(); Но подобная конструкция не работает. Можно здесь что то придумать?

Ответить

sanda sanda 18.01.2014 19:29:31

Что означает такая конструкция? Метод на константу?

Ответить

Gluhar Gluhar 28.12.2013 14:49:18

Здравствуйте Михаил, разве функция strlen() возвращает кол.символов в строке, в справочнике по php написано что то байтовая функция и возвращает она количество байтов в строке, то есть она считает пробелы за символ.

Ответить

alexandrdante alexandrdante 28.12.2013 16:03:47

в PHP strlen() возвращает длину строки

Ответить

Gluhar Gluhar 28.12.2013 16:35:16

Функция strlen() возвратит количество байт, а не число символов в строке. P.s.В справочнике написано!

Ответить

alexandrdante alexandrdante 28.12.2013 16:39:55

вау-вау,в каком таком интересном справочнике это написано?если не секрет,конечно и это не заговор инопланетян. Можно ссылочку?) Быть может,Вы не верно уловили суть. Да,данная функция учитывает и пробелы как символ. Но опять же,она считает длину конкретной,заданной строки.Т.е.количество символов в этой строке. И да,пробел - это литера,не имеющая очертаний,т.е. невидимая А возвращает оно именно количество символов в строке. Можете проверить)

Ответить

Gluhar Gluhar 28.12.2013 16:49:42

Вот http://www.php.net/strlen

Ответить

alexandrdante alexandrdante 28.12.2013 17:00:41

ну,тут зависимость идёт В зависимости от кодировки. Но называют именно функцией для расчёта длинны строки. Просто не всегда размер символа соответствует одному байту. И если взять другую кодировку,то да. Но это не ошибка. Хотя подмечено верно Суть не меняется от этого замечания. Да и в любом случае у Михаила просто не написано уточнение о том,что только в случае,если символы весят не более байта

Ответить

m111 m111 08.07.2016 22:41:56

Доброго времени! Мне нужна строковая функция чтобы в строке: 1. пробел(ов) заменить одним знаком "-" 2. изменить регистр в нижний, 3. удалить все знаки кроме букв и цифр. 4. и заменить все буквы на английский Если можете помогите кто нибудь пожалуйста.

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.