- str_replace
- Список параметров
- Возвращаемые значения
- Примеры
- Примечания
- Замечание о порядке замены
- Смотрите также
- str_replace
- Список параметров
- Возвращаемые значения
- Примеры
- Примечания
- Замечание о порядке замены
- Смотрите также
- Заменить точку с запятой в строке, обрамленной кавычками
- 4 ответа 4
- Замена 4х пробелов на tab
- Замена точек на многоточие
- Замена повторяющихся знаков препинания
- Комментарии
- Другие публикации
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()
// присваивает: 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\nСтрока 2\rСтрока 3\r\nСтрока 4\n» ;
$order = array( «\r\n» , «\n» , «\r» );
$replace = ‘
‘ ;
?php
// Обрабатывает сначала \r\n для избежания их повторной замены.
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
Эта функция возвращает строку или массив, в котором все вхождения 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()
// присваивает: 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\nСтрока 2\rСтрока 3\r\nСтрока 4\n» ;
$order = array( «\r\n» , «\n» , «\r» );
$replace = ‘
‘ ;
?php
// Обрабатывает сначала \r\n для избежания их повторной замены.
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() — Преобразует заданные символы или заменяет подстроки
Заменить точку с запятой в строке, обрамленной кавычками
Помогите написать регулярное выражение, которое ищет в строке, обрамленной двойными кавычками, точку с запятой и заменяет точку с запятой на точку.
не получается из подстроки, обрамленной кавычками, убрать точку с запятой. Пробовал так: preg_replace(«/^\»(\W);(\W)\»+$/», «$1.$2», $text);
4 ответа 4
С учетом экранированных кавычек и прочих замечаний выше:
$result = preg_replace_callback('/(?, $text); /* string(395) "Гибридизация; "ковалентно испаряет \"фрагментарный,\" катионит при любом катализаторе,". Энергетический подуровень \"синфазно;\" адсорбирует "квазар, тем самым, открывая, возможность. " синтеза тетрахлордифенилдиоксина;" */ var_dump($result);
UPD. Та же самая регулярка более подробно с комментариями:
/ # соответствует выражению, если подвыражение в скобках (?
Алгоритм простой: регулярное выражение находит все строки в кавычках целиком с учетом экранирования и для их замены применяет callback, который в свою очередь заменяет в строке все символы ; на , .
Т.о. если кавычка будет в начале строки, то данное условие будет истинно (поскольку начало строки не соответствует обратному слешу) и кавычка захватиться.
Еще (если я правилно понял) почему между кавычками д.б. как минимум 2 символа ?
?(?
Это ведь часть для поиска "завершающей" кавычки ?
Нет, я специально разбил составляющие шаблона на строки.
? , стоящий после квантификатора, является инвертором жадности соответствующего квантификатора. Т.е. выражение .*? эквивалентно .* стой-лишь разницей, что первое не жадное (или наоборот первое жадное, а второе не жадное, если используется глобальный модификатор жадности)
А завершающая кавычка задается так-же как и открывающая.
Замена символов по регулярному выражению
Замена символов и строк по регулярному выражению при помощи PHP функции preg_replace() .
Замена повторяющихся пробелов на один
$text = 'Многие известные личности и по сей день'; echo preg_replace("/[ ]+/", ' ', $text);
Многие известные личности и по сей день
Замена 4х пробелов на tab
Выражение заменяет четыре пробела на табуляцию в начале всех строк.
$text = ' My text has somuch whitespace'; echo preg_replace('/(?:^|\G)(\t|[ ])/m', "\t", $text);
My text has somuch whitespace
Замена точек на многоточие
$text = 'Многие известные личности и по сей день. '; echo preg_replace('/\./', '…', $text);
Многие известные личности и по сей день…
Замена повторяющихся знаков препинания
$text = 'Многие известные. личности и по сей день. Современные. технологии достигли. '; echo preg_replace("/(\.|,|!|\?)+/", '\\1', $text);
Многие известные. личности и по сей день, Современные? технологии достигли!
Комментарии
Другие публикации
Для форматирования текста иногда требуется заменить все кавычки в тексте на французские «ёлочки», сделать это можно с.
Для предотвращения XSS, SQL-инъекций и других атак, данные полученные из форм нужно чистить. Простое экранирования кавычек не достаточно, нужен комплексный подход по типу данных.