php убрать часть строки
Функция str_replace в php нужна для замены подстроки в строке.
У функции следующие параметры:
Замена подстроки
Пример: заменим bbb на zzz:
А что если нам нужно также заменить и ccc на zzz? Мы бы конечно могли запустить функцию 2 раза, в первый раз заменив первую подстроку, а второй раз другую, но можно просто указать массив подстрок поиска первым параметром.
Пример: заменим bbb и ccc на zzz:
Что если нам нужно заменить bbb на zzz, а ccc на www?
Мы конечно снова можем запустить функцию 2 раза, но оптимальнее с точки зрения производительности будет и вторым параметром передать массив. В первом массиве будут подстроки, которые мы ищем, а во втором те, на которые заменяем.
Пример: заменяем bbb на zzz, а ccc на www:
Результат у нас правильный, но читабельность конечно страдает. А представьте если бы мы указывали сразу 50 таких строк для замены? И потом когда мы добавляем или заменяем строку, ее приходилось бы искать в 2 местах.
Более читабельным был бы код:
Тут нам помогли функции array_keys и array_values которые вернули все ключи и все значения соответственно. Кстати для подобной замены вам не обязательно использовать функцию str_replace, а можно воспользоваться strtr, и тогда наш код выглядел бы еще более просто:
Таким образом если дополнить наш пример:
Удаление подстроки
Хоть это и очевидно, давайте проговорим еще момент с удалением строк. Чтобы удалить подстроку нужно просто заменить ее на пустоту (пустую строку).
Удалим xx из нашей строки:
Другие примеры
Рассмотрим еще несколько примеров:
Эта функция не поддерживает регулярные выражения, но для этого есть другая функция: preg_replace()
Более мощная альтернатива: preg_replace
С помощью функции preg_replace вы можете осуществлять замену по регулярном выражению. Если вам не хватает возможностей str_replace, то обратите внимание на эту функцию.
Продвинутая работа со строками
Если вы часто работаете со строками, то возможно вам пригодятся более высокоуровневые методы для их обработки.
Взгляните как будут выглядеть поиск и замена строк с помощью symfony/string:
Как видите здесь есть много полезных методов, для написания которых мы с вами могли бы потратить много времени. Посмотрите также другие полезные примеры работы с symfony/string
PHP: substr и мощные альтернативы, чтобы вырезать часть строки
Поговорим о том, как обрезать строку в PHP. Функция substr в предназначена для получения части строки. Она выделяет подстроку из переданной строки и возвращает её. Для этого нужно указать строку, порядковый номер символа, начиная с которого нужно вырезать строку, порядковый номер символа, до которого мы верезаем подстроку.
Обратите внимание, что substr неправильно работает с многобайтовыми кодировками, поэтому мы будем использовать mb_substr, которая работает с ними корректно. Об этой проблеме немного ниже.
Теперь перейдем к примерам.
Получаем строку начиная с определенного символа
Мы вырезали первые 8 символов из строки, содержащей URL адрес.
Получаем определенное количество символов
Теперь давайте вырежем еще и «/admin/» в конце.
Мы бы могли сделать это указав количество символов, которое нужно взять, оно равно количеству символов в домене, их 11
Вырезаем символы с конца
Что если мы не знаем количества символов в домене, но знаем что нужно вырезать строку «/admin/», длина которой составляет 7 символов? Иными словами нам нужно вырезать с конца.
В таком случае нужно указать отрицательное число:
Получаем несколько последних символов
Что если нам нужно вернуть наоборот только 7 последних символов? Тогда код будет следующим:
Получаем первый символ строки
Получаем последний символ строки
Получение подстроки по регулярному выражению
Проблема при работе с многобайтовыми кодировками.
Рассмотрим такой пример:
Что случилось? Почему в первом случае, где мы использовали mb_substr все сработало хорошо, а во втором случае вернулся какой-то битый символ?
Дело в том, что в UTF-8 кириллица кодируется 2 байтам, вместо одного. substr считает, что символ равен байту и поэтому вырезает 3 байта с начала. Таким образом она вырезала букву «П», и только половину буквы «Р». В общем вы поняли: всегда используйте mb_substr когда работаете с текстом, который потенциально может содержать многобайтовые символы.
Продвинутая работа со строками
Если вы часто работаете со строками, вам пригодится это расширение: symfony/string
С его помощью вы сможете легко вырезать строки. Взгляните на несколько примеров:
Как с помощью PHP удалить символ – все способы реализации
Дата публикации: 2017-05-19
От автора: может, слов не выкинешь из песни. Но вот в PHP удалить символ проще простого. Сегодня этим и займемся.
Функциональный подход
Имеется в виду использование встроенных в ядро языка функций. Сначала используем str_replace(). Она принимает три аргумента: символ замены, заменяемый символ и исходную строку. Пример:
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Но это не единственная функция для изъятия «нежелательного» элемента из строки. Вот еще одна:
Здесь для удаления определенных частей текста применяем функцию substr(). В качестве параметров передаем ей первоначальную строку, положение, с которого нужно отсечь строку, и положение последнего знака возвращаемой подстроки.
Использование данной функции оправдано, если знаете очередность символа, который нужно изъять.
Вот еще одна функция, помогающая в решении проблемы. strstr() возвращает часть строки до или после переданного ей символа. Как от него избавиться:
Для этого в параметрах функции указываем true и получаем левую часть строки от символа, но уже без него.
Регулярки, потому что регулярно
Как всегда, господа, «на второе» у нас регулярные выражения. Их использование крайне удобно для решения некоторых «неудобных» ситуаций. К примеру, если нужно избавиться от повторяющихся знаков:
Здесь применяется функция для работы с регулярками preg_replace(). В переданной ей строке она ищет заданный символ и меняет его на другой. В приведенном выше примере таким образом мы избавились от нулей в тексте.
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Разработка веб-приложения на PHP
Создайте веб-приложение на PHP на примере приема платежей на сайте
How can I remove part of a string in PHP? [closed]
Want to improve this question? Update the question so it’s on-topic for Stack Overflow.
How can I remove part of a string?
Example string: «REGISTER 11223344 here»
How can I remove «11223344» from the above example string?
9 Answers 9
If you’re specifically targetting «11223344», then use str_replace :
You can use str_replace(), which is defined as:
So you could write the code as:
If you need better matching via regular expressions you can use preg_replace().
Assuming 11223344 is not constant:
When you need rule-based matching, you need to use a regular expression:
That will match the first set of numbers, so if you need to be more specific, try:
substr() is a built-in PHP function which returns part of a string. The function substr() will take a string as input, the index form where you want the string to be trimmed, and an optional parameter is the length of the substring. You can see proper documentation and example code on substr.
Note: index for a string starts with 0.
Dynamically, if you want to remove (a) part(s) from (a) fixed index(es) of a string, use this function:
One of its usages is to execute command-like strings, which you know their structures.
substr_replace
(PHP 4, PHP 5, PHP 7, PHP 8)
substr_replace — Заменяет часть строки
Описание
Список параметров
Возвращаемые значения
Возвращает результирующую строку. Если string является массивом, то возвращает массив.
Список изменений
Версия | Описание |
---|---|
8.0.0 | length теперь допускает значение null. |
Примеры
Пример #1 Простой пример использования substr_replace()
Пример #2 Использование substr_replace() для одновременной множественной замены строк
Результат выполнения данного примера:
Примечания
Замечание: Эта функция безопасна для обработки данных в двоичной форме.
Смотрите также
User Contributed Notes 35 notes
Forget all of the mb_substr_replace() implementations mentioned in this page, they’re all buggy.
Here is a version that mimics the behavior of substr_replace() exactly:
PHP version of Java’s removeCharAt() function:
Using substr_replace() can be avoided by using substr() instead:
This can be useful when you need to replace parts of multibyte strings like strings encoded with utf-8. There isn’t a multibute variant for substr_replace(), but for php substr() there is mb_substr(). For more information on multibyte strings see http://nl3.php.net/manual/en/ref.mbstring.php
I’ve just taken a look at the post by ntoniazzi and I have a very small correction to make.
In the second if statement, it should be a triple equals, so:
I wrote a function that you can use for example in combination with a search script to cut off the articles that are too long.
I recently ran across a situation where I need to strip a heavily nested html list such that only the top level was preserved. I started with a regular expression solution, but found that I kept matching the wrong closing ul with an outer opening ul.
This was my alternative solution, and it seems to work well:
?>
Hope this helps someone.
This will truncate a longer string to a smaller string of specified length while replacing the middle portion with a separator exactly in the middle.
//prints «abcdefghij/. /56789z.jpg»
I have a little function that works like substr_replace () what I use for some purpose. Maybe someone needs it.
This is a small powerful function that performs its job flawlessly.
I suggest changing the function suggested by Guru Evi slightly. I found that it doesn’t work as written here.
If your string is not long enough to meet what you specify in start and length then the replacement string is added towards the end of the string.
I use strip_tags to strip out the HTML otherwise you might get a screwed up HTML (when a tags open in the string, but because you cut-off it doesn’t)
THE DOT DOT DOT ISSUE
PROBLEM:
You want to abbreviate a string.
E.g. You want «BritneySpears» to show as «BritneySpe. «, being only the ten first characters followed by «. «
This will result in BritneySpe.
The older function would end up looking like «blah blah. » or «blah blah. » which doesn’t look so nice to me.
$punctuation = «. ;,-» ; //punctuation you want removed
Here is a simple function to shorten a string and add an ellipsis
This may be obvious to others, but I just spent hours and my feeble brain only caught up to it after a long break.
If you are looping through a string which has multiple substrings that need to be replaced, you have to add an offset factor to each original offset before you replaced any strings. Here is a real world example:
From draft.js we get paragraphs with multiple links designated only with offset, anchor text length, url, target. So each anchor text must be wrapped in the anchortext to save proper content in the database.
Here is the implementation of offset factor:
I hope this helps a noobie 🙂 If there is another easier way, I would love to hear about it.
First Example can be simplified =>
$input = array(‘A: XXX’, ‘B: XXX’, ‘C: XXX’);
output: Array ( [0] => A: YYY [1] => B: YYY [2] => C: YYY )
I recently needed a routine that would remove the characters in one string from another, like the regex
I don’t know if this function is multibyte safe but I’ve written a function that will do the same in multibyte mode.
Just to add to the examples, if replacement is longer than length, only the length number of chars are removed from string and all of replacement is put in its place, and therefor strlen($string) is inreased.
$var = ‘ABCDEFGH:/MNRPQR/’;
/* Should return ABCDEFGH:/testingRPQR/ */
echo substr_replace ($var, ‘testing’, 10, 2);
If you would like to remove characters from the start or end of a string, try the substr() function.
The comment by geniusdex is a good one. Short, simple functions are the best. But if the string is not longer than the limit set, NOTHING is returned. Here is the function re-done to always return a string:
Regarding «. «, even the short functions are too long and complicated, and there’s no need to use substr_replace. substr() works better and is way faster prior to 4.3.5 as the below poster stated.
This is my version of making dotted strings:
To abbreviate links into ‘. ‘ if they outreach a certain amount of space; use the preg_replace function instead.
For instance you grabbed the headlines of a news site for use on your own page and the lines are to long: