No Image

Php замена подстроки в строке

СОДЕРЖАНИЕ
374 просмотров
10 марта 2020

(PHP 4, PHP 5, PHP 7)

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

Описание

Эта функция возвращает строку или массив, в котором все вхождения search в subject заменены на replace .

Если не нужны сложные правила поиска/замены (например, регулярные выражения), использование этой функции предпочтительнее preg_replace() .

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

Если search и replace – массивы, то str_replace() использует каждое значение из соответствующего массива для поиска и замены в subject . Если в массиве replace меньше элементов, чем в search , в качестве строки замены для оставшихся значений будет использована пустая строка. Если search – массив, а replace – строка, то эта строка замены будет использована для каждого элемента массива search . Обратный случай смысла не имеет.

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

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

Значение замены, будет использовано для замены искомых значений search . Для множества значений можно использовать массив.

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

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

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

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

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

Примеры

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

// присваивает
$bodytag = str_replace ( "%body%" , "black" , " " );

// присваивает: Hll Wrld f PHP
$vowels = array( "a" , "e" , "i" , "o" , "u" , "A" , "E" , "I" , "O" , "U" );
$onlyconsonants = str_replace ( $vowels , "" , "Hello World of PHP" );

// присваивает: You should eat pizza, beer, and ice cream every day
$phrase = "You should eat fruits, vegetables, and fiber every day." ;
$healthy = array( "fruits" , "vegetables" , "fiber" );
$yummy = array( "pizza" , "beer" , "ice cream" );

Читайте также:  Fallout 4 не видит ini файл

$newphrase = str_replace ( $healthy , $yummy , $phrase );

// присваивает: 2
$str = str_replace ( "ll" , "" , "good golly miss molly!" , $count );
echo $count ;
?>

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

// Порядок замены
$str = "Строка 1
Строка 2
Строка 3
Строка 4
" ;
$order = array( "
" , "
" , "
" );
$replace = ‘
‘ ;

// Обрабатывает сначала
для избежания их повторной замены.
echo $newstr = str_replace ( $order , $replace , $str );

// Выводит F, т.к. A заменяется на B, затем B на C, и так далее.
// В итоге E будет заменено F, так как замена происходит слева направо.
$search = array( ‘A’ , ‘B’ , ‘C’ , ‘D’ , ‘E’ );
$replace = array( ‘B’ , ‘C’ , ‘D’ , ‘E’ , ‘F’ );
$subject = ‘A’ ;
echo str_replace ( $search , $replace , $subject );

// Выводит: яблорехкорех орех (по вышеуказанной причине)
$letters = array( ‘я’ , ‘о’ );
$fruit = array( ‘яблоко’ , ‘орех’ );
$text = ‘я о’ ;
$output = str_replace ( $letters , $fruit , $text );
echo $output ;
?>

Примечания

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

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

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

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

  • str_ireplace() – Регистронезависимый вариант функции str_replace
  • substr_replace() – Заменяет часть строки
  • preg_replace() – Выполняет поиск и замену по регулярному выражению
  • strtr() – Преобразует заданные символы или заменяет подстроки

Функция str_replace() заменяет все совпадения в строке на указанную строку. Функция str_replace() возвращает строку, полученную в результате замены.

Вот её синтаксис:

str_replace(что менять, на что менять, исходная строка)

Функция чувствительна к регистру.

Вот простой пример работы функции str_replace() :

Этот пример демонстрирует общий принцип работы функции str_replace() . Но в качестве первого и второго аргумента этой функции можно передать массивы. Давайте рассмотрим более сложный пример.

Читайте также:  Sufd s7200w03 ufk72 roskazna local

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

Вы наверно знаете, что на форумах есть BB-код, который нужно заменять на код HTML. Эту задачу может выполнять функция str_replace() .

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

В этом примере много кода, особенно когда нужно обработать более 10 пар тегов. Вот тут и используем массив:

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

Если второй массив короче первого, то вместо недостающих элементов функцией str_replace() будет подставлена пустая строка.

Если вам нужны сложные правила поиска/замены (например, регулярные выражения), то используйте функцию preg_replace() . Для простых сравнений строк использование функции str_replace() предпочтительней.

Трюки с str_replace()

Этот пример очень хорошо демонстрирует особенность работы функции:

Этот код вернёт символ F, так как будет заменяется A на B, затем B на C, и так далее до F.

Теперь рассмотрим пример правильного порядка замены последовательностей конца строки на тег
.

Вы должны знать, что символы конца строки:
,
и
(возврат каретки).

В массиве $order спачала стоят символы
(так в Windows указывается конец строки) для избежания двойной замены.

(PHP 3 >= 3.0.6, PHP 4, PHP 5)

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

Описание mixed str_replace ( mixed search, mixed replace, mixed subject [, int &count] )

Эта функция возвращает строку или массив subject , в котором все вхождения search заменены на replace . Если не нужны сложные правила поиска/замены, использование этой функции предпочтительнее ereg_replace() или preg_replace() .

С версии PHP 4.0.5 , любой аргумент str_replace() может быть массивом.

Внимание

В версиях младше 4.3.3 эта функция содержит ошибку при одновременной передаче массивов в аргументах search и replace . Ошибка заключается в том, что пустые элементы массива search пропускались без перемещения к следующему элементу массива replace . Эта ошибка была исправлена в PHP 4.3.3 . Если ваши скрипты использовали эту ошибку, то в них нужно удалить пустые элементы из массива search перед вызовом этой функции.

Читайте также:  Языковой пакет для windows xp sp3

Если subject – массив, поиск и замена производится в каждом элементе этого массива, и возвращается также массив.

Если и search , и replace – массивы, то str_replace() использует все значения массива search и соответствующие значения массива replace для поиска и замены в subject . Если в массиве replace меньше элементов, чем в search , в качестве строки замены для оставшихся значений будет использована пустая строка. Если search – массив, а replace – строка, то replace будет использована как строка замены для каждого элемента массива search .

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

// присваивает
$bodytag = str_replace ( "%body%" , "black" , " " );

// присваивает: Hll Wrld f PHP
$vowels = array( "a" , "e" , "i" , "o" , "u" , "A" , "E" , "I" , "O" , "U" );
$onlyconsonants = str_replace ( $vowels , "" , "Hello World of PHP" );

// присваивает: You should eat pizza, beer, and ice cream every day
$phrase = "You should eat fruits, vegetables, and fiber every day." ;
$healthy = array( "fruits" , "vegetables" , "fiber" );
$yummy = array( "pizza" , "beer" , "ice cream" );

$newphrase = str_replace ( $healthy , $yummy , $phrase );

// начиная с версии 5.0.0 доступен аргумент count
$str = str_replace ( "ll" , "" , "good golly miss molly!" , $count );
echo $count ; // 2
?>

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

Замечание: Начиная с PHP 5.0.0 количество произведенных замен может быть получено в необязательном аргументе count , который передается по ссылке. В версиях до PHP 5.0.0 этот аргумент недоступен.

Комментировать
374 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock
detector