Как удалить часть строки 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 удалить символ – все способы реализации

Дата публикации: 2017-05-19

Как удалить часть строки php. Смотреть фото Как удалить часть строки php. Смотреть картинку Как удалить часть строки php. Картинка про Как удалить часть строки php. Фото Как удалить часть строки php

От автора: может, слов не выкинешь из песни. Но вот в PHP удалить символ проще простого. Сегодня этим и займемся.

Функциональный подход

Имеется в виду использование встроенных в ядро языка функций. Сначала используем str_replace(). Она принимает три аргумента: символ замены, заменяемый символ и исходную строку. Пример:

Как удалить часть строки php. Смотреть фото Как удалить часть строки php. Смотреть картинку Как удалить часть строки php. Картинка про Как удалить часть строки php. Фото Как удалить часть строки php

Как удалить часть строки php. Смотреть фото Как удалить часть строки php. Смотреть картинку Как удалить часть строки php. Картинка про Как удалить часть строки php. Фото Как удалить часть строки php

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Но это не единственная функция для изъятия «нежелательного» элемента из строки. Вот еще одна:

Как удалить часть строки php. Смотреть фото Как удалить часть строки php. Смотреть картинку Как удалить часть строки php. Картинка про Как удалить часть строки php. Фото Как удалить часть строки php

Здесь для удаления определенных частей текста применяем функцию substr(). В качестве параметров передаем ей первоначальную строку, положение, с которого нужно отсечь строку, и положение последнего знака возвращаемой подстроки.

Использование данной функции оправдано, если знаете очередность символа, который нужно изъять.

Вот еще одна функция, помогающая в решении проблемы. strstr() возвращает часть строки до или после переданного ей символа. Как от него избавиться:

Как удалить часть строки php. Смотреть фото Как удалить часть строки php. Смотреть картинку Как удалить часть строки php. Картинка про Как удалить часть строки php. Фото Как удалить часть строки php

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

Регулярки, потому что регулярно

Как всегда, господа, «на второе» у нас регулярные выражения. Их использование крайне удобно для решения некоторых «неудобных» ситуаций. К примеру, если нужно избавиться от повторяющихся знаков:

Здесь применяется функция для работы с регулярками preg_replace(). В переданной ей строке она ищет заданный символ и меняет его на другой. В приведенном выше примере таким образом мы избавились от нулей в тексте.

Как удалить часть строки php. Смотреть фото Как удалить часть строки php. Смотреть картинку Как удалить часть строки php. Картинка про Как удалить часть строки php. Фото Как удалить часть строки php

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Как удалить часть строки php. Смотреть фото Как удалить часть строки php. Смотреть картинку Как удалить часть строки php. Картинка про Как удалить часть строки php. Фото Как удалить часть строки php

Разработка веб-приложения на PHP

Создайте веб-приложение на PHP на примере приема платежей на сайте

Источник

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

С его помощью вы сможете легко вырезать строки. Взгляните на несколько примеров:

Источник

substr

(PHP 4, PHP 5, PHP 7, PHP 8)

substr — Возвращает подстроку

Описание

Список параметров

Если string меньше offset символов, будет возвращена пустая строка.

Пример #1 Использование отрицательного параметра offset

Если length положительный, возвращаемая строка будет не длиннее length символов, начиная с параметра offset (в зависимости от длины string ).

Если параметр length опущен, то будет возвращена подстрока, начинающаяся с позиции, указанной параметром offset и длящейся до конца строки.

Пример #2 Использование отрицательного параметра length

Возвращаемые значения

Возвращает извлечённую часть параметра string или пустую строку.

Список изменений

Примеры

Пример #3 Базовое использование substr()

Пример #4 substr() и приведение типов

class apple <
public function __toString () <
return “green” ;
>
>

Результат выполнения данного примера:

Пример #5 Недопустимый диапазон символов

Результат выполнения данного примера в PHP 8:

Результат выполнения данного примера в PHP 7:

Смотрите также

User Contributed Notes 36 notes

For getting a substring of UTF-8 characters, I highly recommend mb_substr

may be by following functions will be easier to extract the needed sub parts from a string:

Coming to PHP from classic ASP I am used to the Left() and Right() functions built into ASP so I did a quick PHPversion. hope these help someone else making the switch

Shortens the filename and its expansion has seen.

### SUB STRING BY WORD USING substr() and strpos() #####

### THIS SCRIPT WILL RETURN PART OF STRING WITHOUT WORD BREAK ###

Drop extensions of a file (even from a file location string)

= “c:/some dir/abc defg. hi.jklmn” ;

?>

output: c:/some dir/abc defg. hi

Hope it may help somebody like me.. (^_^)

PS:I’m sorry my english is too poor. 🙁

If you want to have a string BETWEEN two strings, just use this function:

$string = “123456789” ;
$a = “12” ;
$b = “9” ;

If you need to parse utf-8 strings char by char, try this one:

Be aware of a slight inconsistency between substr and mb_substr

mb_substr(“”, 4); returns empty string

substr(“”, 4); returns boolean false

tested in PHP 7.1.11 (Fedora 26) and PHP 5.4.16 (CentOS 7.4)

I wanted to work out the fastest way to get the first few characters from a string, so I ran the following experiment to compare substr, direct string access and strstr:

(substr) 3.24
(direct access) 11.49
(strstr) 4.96

(With standard deviations 0.01, 0.02 and 0.04)

THEREFORE substr is the fastest of the three methods for getting the first few letters of a string.

Here we have gr8 function which simply convert ip address to a number using substr with negative offset.
You can need it if you want to compare some IP addresses converted to a numbers.
For example when using ip2country, or eliminating same range of ip addresses from your website 😀

$min = ip2no ( “10.11.1.0” );
$max = ip2no ( “111.11.1.0” );
$visitor = ip2no ( “105.1.20.200” );

I created some functions for entity-safe splitting+lengthcounting:

I needed a function like lpad from oracle, or right from SQL
then I use this code :

Just a little function to cut a string by the wanted amount. Works in both directions.

Anyone coming from the Python world will be accustomed to making substrings by using a “slice index” on a string. The following function emulates basic Python string slice behavior. (A more elaborate version could be made to support array input as well as string, and the optional third “step” argument.)

The output from the examples:
c
cd
cdefg
abcd
abcd
efg

I have developed a function with a similar outcome to jay’s

Checks if the last character is or isnt a space. (does it the normal way if it is)
It explodes the string into an array of seperate works, the effect is. it chops off anything after and including the last space.

I needed to cut a string after x chars at a html converted utf-8 text (for example Japanese text like 嬰謰弰脰欰罏).
The problem was, the different length of the signs, so I wrote the following function to handle that.
Perhaps it helps.

Using a 0 as the last parameter for substr().

[English]
I created python similar accesing list or string with php substr & strrev functions.

About of pattern structures
[start:stop:step]

?>

Using this is similar to simple substr.

Источник

str_replace

(PHP 4, PHP 5, PHP 7, PHP 8)

str_replace — Заменяет все вхождения строки поиска на строку замены

Описание

Список параметров

Если search или replace являются массивами, их элементы будут обработаны от первого к последнему.

Искомое значение, также известное как needle (иголка). Для множества искомых значений можно использовать массив.

Строка или массив, в котором производится поиск и замена, также известный как haystack (стог сена).

Если передан, то будет установлен в количество произведённых замен.

Возвращаемые значения

Эта функция возвращает строку или массив с заменёнными значениями.

Примеры

Пример #1 Примеры использования str_replace()

Пример #2 Примеры потенциальных трюков с str_replace()

Примечания

Замечание: Эта функция безопасна для обработки данных в двоичной форме.

Замечание о порядке замены

Так как str_replace() осуществляет замену слева направо, то при использовании множественных замен она может заменить ранее вставленное значение на другое. Смотрите также примеры на этой странице.

Эта функция чувствительна к регистру. Используйте str_ireplace() для замены без учёта регистра.

Смотрите также

User Contributed Notes 34 notes

A faster way to replace the strings in multidimensional array is to json_encode() it, do the str_replace() and then json_decode() it, like this:

>
?>

This method is almost 3x faster (in 10000 runs.) than using recursive calling and looping method, and 10x simpler in coding.

Note that this does not replace strings that become part of replacement strings. This may be a problem when you want to remove multiple instances of the same repetative pattern, several times in a row.

If you want to remove all dashes but one from the string ‘-aaa—-b-c—–d–e—f’ resulting in ‘-aaa-b-c-d-e-f’, you cannot use str_replace. Instead, use preg_replace:

Be careful when replacing characters (or repeated patterns in the FROM and TO arrays):

To make this work, use “strtr” instead:

Feel free to optimize this using the while/for or anything else, but this is a bit of code that allows you to replace strings found in an associative array.

$string = ‘I like to eat an apple with my dog in my chevy’ ;

// Echo: I like to eat an orange with my cat in my ford
?>

Here is the function:

Be aware that if you use this for filtering & sanitizing some form of user input, or remove ALL instances of a string, there’s another gotcha to watch out for:

// Remove all double characters
$string=”1001011010″;
$string=str_replace(array(“11″,”00″),””,$string);
// Output: “110010”

$string=” ml> Malicious code html> etc”;
$string=str_replace(array(” “,” “),””,$string);
// Output: ” Malicious code etc”

This is what happens when the search and replace arrays are different sizes:

To more clearly illustrate this, consider the following example:

The following function utilizes array_combine and strtr to produce the expected output, and I believe it is the most efficient way to perform the desired string replacement without prior replacements affecting the final result.

This strips out horrible MS word characters.

Just keep fine tuning it until you get what you need, you’ll see ive commented some out which caused problems for me.

There could be some that need adding in, but its a start to anyone who wishes to make their own custom function.

There is an “invisible” character after the †for the right side double smart quote that doesn’t seem to display here. It is chr(157).

[] = ‘“’ ; // left side double smart quote
$find [] = ‘”’ ; // right side double smart quote
$find [] = ‘‘’ ; // left side single smart quote
$find [] = ‘’’ ; // right side single smart quote
$find [] = ‘…’ ; // elipsis
$find [] = ‘—’ ; // em dash
$find [] = ‘–’ ; // en dash

$replace [] = ‘”‘ ;
$replace [] = ‘”‘ ;
$replace [] = “‘” ;
$replace [] = “‘” ;
$replace [] = “. ” ;
$replace [] = “-” ;
$replace [] = “-” ;

nikolaz dot tang at hotmail dot com’s solution of using json_encode/decode is interesting, but a couple of issues to be aware of with it.

json_decode will return objects, where arrays are probably expected. This is easily remedied by adding 2nd parameter ‘true’ to json_decode.

Might be worth mentioning that a SIMPLE way to accomplish Example 2 (potential gotchas) is to simply start your “replacements” in reverse.

So instead of starting from “A” and ending with “E”:

Источник

Leave a Reply

Your email address will not be published. Required fields are marked *