Как в PHP заменить символ в строке: пошаговая инструкция
Оглавление:
Что это такоеФункция str_replace
Как заменить один элемент
Как заменить несколько
Как заменить пробелы
Много примеров
Вывод
Что такое строка в PHP
Это определённый набор или серия символов. Применяется для хранения и изменения любых данных, которые относятся к текстовым. PHP поддерживает 256 различных символов, включая цифры и буквы. При этом они полностью эквивалентны байту.
Создание строк в языке происходит при помощи одинарных и двойных кавычек, а также через использование специального синтаксиса (heredoc и nowdoc).
Важно: размер элемента типа string не может превышать 2 гигабайта.
Функция str_replace + пример
Функция str_replace (то есть string replace) используется для замены. Она ищет заданную строку и везде, где находит её — заменяет.
Синтаксис функции:
str_replace(find, replace, str, count)
Можно использовать такую подсказку:
str_replace("что","на что заменяет","где заменяет");
Функция str_replace может работать как со строкой, так и с массивом. В первом случае — происходит возврат строки, а во втором (при применении к массиву) — возврат массива.
Примечание: функция str_replace() чувствительна к регистру. Поэтому "sergei" не будет соответствовать шаблону "Sergei". Если регистр не важен, то можно задействовать эквивалентную функцию str_ireplace(). Она уже регистронезависимая.
Параметры (аргументы) функции str_replace:
-
find. Обязательный. Это значение для поиска (строка или массив).
-
replace. Обязательный. Строка замены (на неё нужно будет заменить $find).
-
str. Обязательный. Строка для поиска.
-
count. Переменная, в которую сохранится количество сделанных замен.
Пример 1:
<?php
$str = "I'am Alexander";
$res = str_replace("Alexander", "Dima", $str);
echo $res;
?>
Вывод: I'am Dima
Пример 2.
Функция str_replace() может заменить всю (или часть) строки:
<?php
echo str_replace("world", "Dima", "Hello world!");
Вывод: Hello Dima!
Как заменить один элемент в строке на другой
Допустим, у нас имеется строка, где нужно заменить один элемент на другой. Пусть это будет знак дефиса (-), который нужно заменить на знак среднего тире (–).
Для замены мы будем применять разобранную нами функцию str_replace().
Вводим переменную:
$переменная = "Большинство не отличает знак - от дефиса";
Замена str_replace будет иметь следующий вид:
$переменная = str_replace("-","–", $переменная);
Вывод:
Большинство не отличает знак – от дефиса.
Как заменить несколько элементов строки
Способ 1: использование функций str_replace() и str_split()
Для замены нескольких элементов будем использовать уже знакомую нам функцию str_replace.
Пример: нужно заменить символы '\\/:*?"<>|+-' на пустой символ.
<?php
// Объявляем оригинальную строку
$orig_string = '\"\My+Name/i*s:Ale/xand*er';
print("Original string: ");
print($orig_string."\n"."
");
// Заменяем несколько элементов строки используя функции
// str_replace и str_split
$new_string = str_replace(str_split(
'\\/:*?"<>|+-'), '', $orig_string);
print("Modified string: ");
print($new_string);
?>
Вывод:
Original string: \"\My+Name/i*s:Ale/xand*er
Modified string: MyNameisAlexander
Способ 2: Использование функции preg_replace()
Функция preg_replace() используется для замены нескольких символов. Она принимает три параметра:
-
Массив символов для замены, заключенный в ~[ и ]~.
-
Второй и третий параметры полностью повторяют те, что были в предыдущем случае.
Пример: В этом примере знаки, которые нужно заменить — это '\\/:*?"<>|+-', а символ, заменяющий перечисленные элементы — пустой символ ".
<?php
// Объявляем оригинальную строку
$orig_string = '\"\My+Name/i*s:Ale/xand*er';
print("Original string: ");
print($orig_string."\n"."
");
// Заменяем несколько элементов в строке используя функцию
// the preg_replace
$new_string = preg_replace(
'~[\\\\/:*?"<>|+-]~', '', $orig_string);
print("Modified string: ");
print($new_string);
?>
Вывод:
Original string: \"\My+Name/i*s:Ale/xand*er
Modified string: MyNameisAlexander
Как заменить пробелы
Теперь посмотрим на некоторые примеры замены пробелов.
Для удаления всех пробелов внутри можно использовать функцию str_replace().
Пример:
<?php
$str = 'Kak tvoi dela?';
$new_str = str_replace(' ', '', $str);
echo $new_str; // Outputs: Kaktvoidela?
?>
Обратите внимание: мы удалили только сами пробелы. Но если требуется удалить также и табуляцию, и символы конца строки, то лучше применить функцию preg_replace(). Указанная функция позволят выполнить поиск с заменой согласно регулярному выражению.
Пример:
<?php
$str = "This is a good \npiece\tof fruit.";
$new_str = preg_replace("/\s+/", "", $str);
echo $new_str; // Outputs: Thisisagoodpieceoffruit.
?>
-
\t — символ табуляции.
-
\n — символ конца строки.
Примеры: работа со строкой
Разберем несколько важных функций, которые позволяют менять строку в PHP.
Функция substr() извлекает подстроку
Пример:
<?php
echo substr("Hello vova",6); // вернет "vova"
?>
Функция strlen() возвращает длину строки
Пример:
<?php
echo strlen("Hello vova"); // вывод: 10
?>
Функция str_replace() заменяет всю строку или ее часть
Пример:
<?php
echo str_replace("Alexei", "Denis", "Hello Alexei!"); // вывод: Hello Denis!
?>
Функция trim() удаляет пробельные символы из начала и конца строки
Вот расшифровка:
Расшифровка символов для функции trim()
Функция strpos() возвращает позицию заданного символа (или символов) в строке.
Пример:
<?php
echo strpos("Green worms!", "worms"); // вывод: 6
?>
Функция strtolower() преобразует строку в строчный регистр
Пример:
<?php
$str = "Marfa Had A Little mouse";
$str = strtolower($str);
echo $str; // Prints marfa had a little mouse
?>
Функция strtoupper() делает все символы в строке прописными
Пример:
<?php
$str = "Marfa Had A Little Nose";
$str = strtoupper($str);
echo $str; // Prints MARFA HAD A LITTLE NOSE
?>
Функция is_string() определяет, является ли ее аргумент строкой
Пример:
Пример значений, которые возвращает функия is_string()
Дополнительные примеры
Хотите узнать, сколько замен было сделано? Передайте переменную в качестве четвертого аргумента и функция str_replace() сохранит количество замен в соответствующей переменной:
$myString = "I want popsicle right now";
str_replace( 'popsicle', 'ice-cream', $myString, $num );
echo $num; // Displays "1"
Поиск и одновременная заменам фрагментов текста
В функции str_replace() можно передать массивы строк в качестве первого и второго аргументов — для поиска и замены нескольких фрагментов текста одновременно:
$myString = "My amiable lad! Where is he — my amiable lad?";
$searchTerms = array ( 'lad', 'amiable' );
$replacements = array ( 'guy', 'fearless' );
echo str_replace( $searchTerms, $replacements, $myString );
Вывод:
My fearless guy! Where is he — my fearless guy?
Поиск и замена текста в нескольких строках одновременно
Чтобы найти и заменить текст в нескольких строках, нужно передать соответствующий массив в качестве третьего аргумента. И функция str_replace() вернет массив строк уже с заменой:
$string1 = "and with your fearless lad — that would be perfect";
$string2 = "My fearless lad! Where is he — my amiable lad?";
$myStrings = array ( $string1, $string2 );
$newStrings = str_replace( 'lad', 'guy', $myStrings );
echo $newStrings[0] . "
";
echo $newStrings[1] . "
";
Вывод:
and with your fearless guy — that would be perfect
My fearless guy! Where is he — my fearless guy?
Замена части строки с помощью функции substr_replace()
Функция substr_replace() используется для осуществления замены текста в заданной позиции индекса. Для использования функции должны быть переданы три аргумента:
-
Строка.
-
Текст замены.
-
Позиция индекса, с которой следует начать замену.
По умолчанию функция substr_replace() заменяет всё: от начальной позиции до конца строки.
Пример:
$myString = "Nothing was suspicious except a big, black doggo";
echo substr_replace( $myString, "moving", 12 ); // Вывод: "Nothing was moving"
Вывод и тезисы
Можно часто услышать мнение, что PHP скоро умрет. Повсеместно от языка отказываются крупные компании, известные платформы и приложения. Но закат этого языка точно не близок. И его жизнь продлится еще очень долго, как минимум — десятилетия. И PHP был и остается неотъемлемой частью стека бэкенд разработчика.
Но вернемся к теме. Заменять что-то в строке приходится часто. Например, это понадобится при работе cо строками, содержащими данные, или при форматировании текста для дальнейшего отображения на веб-странице. Так что для хорошего веб-разработчика знание PHP точно будет не лишним.
Для замены текста в PHP предусмотрены функции:
-
str_replace(). Ищет одну строку текста и заменяет ее другой.
-
substr_replace(). Заменяет текст в заданной позиции в строке.
Главное про функцию str_replace():
-
Если искомая строка является массивом, поиск и замена выполняются с каждым элементом массива.
-
Если find и replace будут массивами, то в качестве replace будет использована пустая строка (и если replace имеет меньше элементов, чем find).
-
Если find является массивом, а replace будет строкой, то аргумент replace будет применяться для каждого значения find.
str_replace() возвращает строку со всеми вхождениями искомого текста, измененного на текст-замену. Но сама исходная строка остается нетронутой.
Чтобы напоследок закрепить — ещё один простейший пример:
$myString = "I want popsicle right now";
echo str_replace( 'popsicle', 'ice-cream', $myString );
Вывод:
I want ice-cream right now.
-
Создавать проекты на PHP
-
Использовать лучшие инструменты
-
Быстро реализовывать свою идею
-
Защита данных
-
Работать с базами данных