(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" );
$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() . Но в качестве первого и второго аргумента этой функции можно передать массивы. Давайте рассмотрим более сложный пример.
Пример использования 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 перед вызовом этой функции.
Если 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 этот аргумент недоступен.