str_ireplace — Регистро-независимый вариант функции


str_ireplace()

Синтаксис:

str_ireplace(search, replace, subject[, count])

Поддерживается следующими версиями PHP:

Описание функции:

Функции str_ireplace() производит замену одних символов в строке другими.

Обязательный аргумент. Строка или массив поиска

replace Обязательный аргумент. Строка или массив замены mixed subject Обязательный аргумент. Строка или массив где будет сделана замена. mixed count Необязательный аргумент. Имя переменной куда сохраняется количество замен. Передается по ссылке. int

Использование функции str_ireplace() предпочтительнее использованию функции preg_replace(), так как работает быстрее.

Функция str_ireplace() отличается от функции str_replace() тем, что не чувствительна к регистру.

Примеры:

Пример 1:

$arr1 = array(«1″,»2″,»3»);
$arr2 = array(«A»,»B»,»C»);
echo str_ireplace($arr2,$arr1,»cabdfg»);
?>

Str_ireplace — Регистро-независимый вариант функции

Одной из наиболее часто встречающихся задач в программировании является обработка символьных последовательноcтей. Если строка считывается из файла или получается посредством формы, она (символьная строка) нуждается в обработке.

Ниже приведены некоторые наиболее популярные функции обработки строк:

• strstr — находит первое вхождение подстроки. stristr — Регистро-независимый вариант функции strstr.


substr_count — Возвращает число вхождений подстроки

• str_replace — Заменяет строку поиска на строку замены ($str = str_replace ($search, $replace, $subject, $count);). Регистронезависимый вариант этой функции: str_ireplace. Эта функция возвращает строку или массив subject, в котором все вхождения search заменены на replace. Если не нужны сложные правила поиска/замены, использование этой функции предпочтительнее ereg_replace() или preg_replace().

Без необходимости не используйте регулярные выражения.

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

Функции перевода текста из кодировки windows-1251 в UTF-8 и обратно:

Функции сохранения списка (одномерного массива) в файл:

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

• strtr — Преобразует заданные символы ($str = strtr ($str, $from, $to);). Эта функция возвращает строку str, в которой каждое вхождение любого символа из перечисленных в $from заменено на соответствующий символ из строки $to. strtr() может вызываться с двумя аргументами. В этом случае $from должен быть массивом, индексы которого трактуются как строки поиска, а соответствующие значения — как строки замены. strtr() в первую очередь заменяет более длинные подстроки, причем одна и та же строка поиска используется только один раз.

Пример использования strtr() с двумя аргументами:

Этот код выведет:

• Если нужно убедиться в том, что строка не содержит пробелов в начале и в конце, применяется функция trim(str) ($str = trim ($str);). Когда требуется удалить пробелы только с начала строки, нужно использовать ltrim(), в конце строки rtrim(). И если уж зашла речь о начале строки, давайте убедимся, что первый символ заглавный. Чтобы сделать его таковым, примените ucfirst();. Есть и функция для перевода во всех словах в строке их первых букв в заглавные — ucwords();. Кроме того, очень часто бывает необходимо сравнить строку с некоторым шаблоном. Частный случай — поиск в строке (о нем несколько позже). Но нет никакой гарантии, что полученная строка введена пользователем или получена из файла в соответствии с правилами правописания. Другими словами — строка может содержать в середине слова или предложения чередующиеся заглавные и прописные символы. Решение данной проблемы — в применении функций strtolower(); и strtoupper();. Эти функции, соответственно, переводят символьные строки в нижний и верхний регистр. Комбинирование данных возможностей языка РНР приводит к корректному построению строки не зависимо от того, как она была введена или получена в начальном виде.

• htmlspecialchars — переводит специальные символы в коды HTML ($str = htmlspecialchars($str);).

Определенные символы имеют особое значение в HTML и должны быть заменены кодами HTML, если таковые имеют. Эта функция возвращает строки с произведенными такими изменениями. Функция полезна для отчистки полученного от пользователя текста от разметки HTML (доски сообщений, гостевые книги). Осуществляются следующие замены:

‘ ‘ (знак больше) становится ‘>

Следует отметить, что эта функция не заменяет ничего, кроме указанного выше. Для полной обработки применяют функцию htmlentities(string);

• htmlspecialchars_decode — Преобразует специальные HTML-коды обратно в соответствующие символы

• stripslashes — Удаляет экранирование символов, произведенное функцией addslashes().


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

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

• quotemeta — закавычивает метасимволы. Возвращает версию строки str с символами backslash (\) перед каждым из следующих символов: . \\ + * ? [ ^ ] ( $ )

Пример использования строковых функций вместо регулярных выражений.

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

Илон Маск рекомендует:  Iis кэширование приложений

Стоит задача отбросить из начала текстовой строки все символы, расположенные до строкового фрагмента STR1, и из конца этой же строки все символы расположенные после текстового фрагмента STR2.

Казалось бы, такая задача легко решается с использованием функций обработки регулярных выражений explode():

Но в некоторых случаях (например, при обработке текстовых файлов) такая функция будет работать очень медленно и не всегда корректно. Дело в том, что эта функция будет разбивать текст на элементы, образовывая массив по каждому вхождению фрагмента шаблонов поиска. Следовательно, шаблонный поиск по регулярному выражению (в нашем случае фрагменту строки) с использование массива утяжеляют функции.

Но эту задачу легко решить с использованием строковых функций:

,где используются еще две пользовательские функции:

Примеры вызова функций: Результат выполнения:
echo cheize(«23», «78», «123456789»); 456
echo start_str(«23», «12345678»); 1
echo end_str(«34», «12345678»); 56789

В приведенном примере мы используем стандартные строковые функции:

• strpos() — находит в строке первый экземпляр заданной подстроки.

Если подстрока не найдена, strpos( ) возвращает FALSE. Это свойство функции и вызвало использовать такую конструкцию оператора if в нашем примере.

• substr() — возвращает часть строки, начинающуюся с заданной начальной позиции и имеющую заданную длину.

• strlen() — возвращает длину строки.

Казалось бы, какой смысл городить столько строковых функций вместо использования одной функции обработки регулярных выражений. Ответ на этот вопрос Вы найдете тогда, когда будите экспериментировать с разбором больших и сложных текстов.

Преобразование HTML в простой текст


Иногда возникает необходимость преобразовать файл в формате HTML в простой текст. Функции, описанные ниже, помогут вам в решении этой задачи.

• strip_tags() — удаляет из строки все теги HTML и РНР, оставляя в ней только текст.

• get_meta_tags() — предназначена для поиска в файле HTML тегов МЕТА.

Ниже приведен пример удаления из строки всех тегов HTML функцией strip_tags():

В следующем примере удаляются не все, а лишь некоторые теги:

Теги МЕТА содержат информацию о странице, используемую главным образом поисковыми системами. Эти теги находятся внутри пары тегов . . Применение тегов МЕТА и функции get_meta_tags() продемонстрировано в следующем фрагменте:

Результат работы функции get_meta_tags():

Интересная подробность: Данные тегов МЕТА можно извлекать не только из файлов, находящихся на сервере, но и из других URL.

• nl2br — Вставляет HTML код разрыва строки перед каждым переводом строки. Возвращает строку с ‘
‘, вставленными перед всеми символами перевода строки.

Функция str_replace() в PHP

Функция 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.

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

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

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

Почему str_ireplace чувствителен к регистру кириллицы?

Есть массив, в который записываются латинские символы и кириллица. Так вот, почему-то str_ireplace чувствителен к регистру кириллицы, а к латинским нет.

Как сделать, чтоб оно не было чувствительно?

  • Вопрос задан более года назад

  • 453 просмотра

Кто-то пишет обертки в виде mb_str_replace, потому что str_replace не корректно работает с многобайтом, хотя на php.net/manual/ru/ref.mbstring.php в первом коменте утверждают обратное.

В вашем случае походу то самое исключение когда оно не работает, напишите обертку в виде mb_str_ireplace

str_replace()

Синтаксис:

str_replace(search, replace, subject[, count])

Поддерживается следующими версиями PHP:

Описание функции:

Функции str_replace() производит замену одних символов в строке другими.

Илон Маск рекомендует:  Как показать первый кадр avi файла

Обязательный аргумент. Строка или массив поиска

replace Обязательный аргумент. Строка или массив замены mixed subject Обязательный аргумент. Строка или массив где будет сделана замена. mixed count Необязательный аргумент. Имя переменной куда сохраняется количество замен. Передается по ссылке. int

Использование функции str_replace() предпочтительнее использованию функции preg_replace(), так как работает быстрее.

Функция str_replace() отличается от функции str_ireplace() тем, что чувствительна к регистру.

Примеры:

Пример 1:


echo str_replace(«Вова»,»Дима»,»С добрым утром Вова!»);
?>

С добрым утром Дима!

Пример 2:

В этом примере показано использование массивов

$arr1 = array(«1″,»2″,»3»);
$arr2 = array(«a»,»b»,»c»);
echo str_replace($arr2,$arr1,»cabdfg»);
?>

Пример 3:

В этом примере показано использование массивов во всех аргументах

$arr1 = array(«1″,»2″,»3»);
$arr2 = array(«a»,»b»,»c»);
$arr3 = array(«t»,»c»,»a»);
print_r (str_replace($arr2,$arr1,$arr3));
?>

Str_ireplace не работает с кирилицей в регистре в файле utf8

С латиницей работает, а с кирилицей в Большом регистре не работает, если файл в кодировке utf8

Работает если файл в кодировке ANSI.

Подскажите как сделать чтоб работало в файле с кодировкой utf8 ?

Нужно массив перевести в другую кодировку?

08.06.2020, 18:25

Не работает str_ireplace с UTF-8
$a = ‘ДОМ’; $a = str_ireplace(‘о’, ‘!’, $a); echo $a; //ДОМ ничего не работает пробовал с.

Оператор if не работает с кирилицей
Перебираю строку по символьно ищу пара символов, ну например _Т если буква Т на кирилице то.

Не работает функция strtolower и strupper с кирилицей. С английскими все нормально.
1. Отправляю функцией mail информацию для пользователся. На адреса @mail, @rambler, @list .


Заполнить и сохранить данные в текстовом файле в кодировке utf8
здравствуйте! люди подскажите !пару дней назад начал изучение языка С++,нужно написать программу.

Подскажите, как реализовать замену переменных в rtf-файле из utf8
Данные в БД сервера хранятся в utf8 при замене переменных в rtf-файле вместо русского текста.

Работа со строками

Замена вхождения подстроки

Функция str_replace

Для замены вхождения подстроки можно использовать функцию str_replace() . Это простая и удобная функция, позволяющая решать множество задач, не требующих особых тонкостей при выборе заменяемой подстроки. Для того чтобы производить замены с более сложными условиями, используют механизм регулярных выражений и соответствующие функции ereg_replace() и preg_replace() . Синтаксис функции str_replace() такой:

Функция str_replace() ищет в рассматриваемом объекте значение и заменяет его значением, предназначенным для замены . Почему мы говорим здесь не про строки для поиска и замены и исходную строку , а про значения и объект, в котором происходит замена ? Дело в том, что начиная с PHP 4.0.5 любой аргумент этой функции может быть массивом.

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

Если искомое значение и значение для замены – массивы, то берется по одному значению из каждого массива и производится их поиск и замена в объекте. Если значений для замены меньше, чем значений для поиска, то в качестве новых значений используется пустая строка .

В результате получим такой массив:

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

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

Str_ireplace — Регистро-независимый вариант функции

= «ЯблОКо1 ЯБЛОКО1 яблоко1 fo FO
» ;
// устанавливаем русскую локаль
setlocale ( LC_ALL , array( «ru_RU.CP1251» , «ru_SU.CP1251» , «ru_RU» , «russian» , «ru_SU» , «ru» ));

// проверяем функции рег.выражений
print preg_replace ( «

// проверяем строковые функции
print strtolower ( $text );

// проверяем str_ireplace
print str_ireplace ( «яб» , «*» , $text );
print str_ireplace ( «f» , «*» , $text );


// теперь внимание: проверяем str_ireplace с заменой одного символа кириллицы
print str_ireplace ( «я» , «*» , $text );
?>

*блОКо1 *БЛОКО1 *блоко1 fo FO
яблоко1 яблоко1 яблоко1 fo fo
*лОКо1 *ЛОКО1 *локо1 fo FO
ЯблОКо1 ЯБЛОКО1 яблоко1 *o *O
ЯблОКо1 ЯБЛОКО1 *блоко1 fo FO
22.02.2008, 23:35 #2

к str_replace никаких претензий нет, а какие были замечены баги, а то повсеместно ей пользуюсь.

На php4 приходилось пользоваться прегом, но теперь есть php5 и это чудо str_ireplace(), которое совсем не требовательно к ресурсам по сравнению с функциями регулярных выражений.

22.02.2008, 23:51 #3

mfl, Претензий нет .
Посмотрите, как работает Ваш код: http://se-car.ru/test/1.php

и почитайте http://ru2.php.net/str_replace
Там в красноватой рамочке.

22.02.2008, 23:56 #4

Претензий нет именно к str_replace() — регистрозависимая фуннкция
К str_ireplace() — регистронезависимой функции, как раз есть претензии, указанные в первом посте.

По поводу http://se-car.ru/test/1.php
str_ireplace() была введена только в php5, этот скрипт работает на PHP/4.4.4, следовательно при встрече неизвестной функции str_ireplace скрипт прекращает работу.

А кроме тех ошибок, что указаны на http://ru2.php.net/str_replace еще ошибки есть?
Как видим начиная с php 4.3.3 ошибка была исправлена.

23.02.2008, 08:42 #5
23.02.2008, 10:38 #6
*блОКо1 *БЛОКО1 *блоко1 fo FO
яблоко1 яблоко1 яблоко1 fo fo
*лОКо1 *ЛОКО1 *локо1 fo FO
ЯблОКо1 ЯБЛОКО1 яблоко1 *o *O
*блОКо1 *БЛОКО1 *блоко1 fo FO
23.02.2008, 12:38 #7
Если в качестве locale передан массив, или после этого аргумента следуют дополнительные аргументы, функция будет использовать элементы массива или аргументы по порядку в качестве имен локали до тех пор, пока установка локали не будет успешной.


Да, реально какой-то странный глюк. С другими буквами, например, «б» аналогичная чушь.

PHP. mb_str_replace — замена строки в русском тексте

По молчанию, на момент написания статьи в PHP отсутствует функция для замены слов в кириллическом тексте.
По этому, если вам потребовалось произвести замену строки в кодировке utf-8, то можно написать свою функцию mb_str_replace.

    Воспользуемся функцией mb_detect_encoding для определения кодировки исходного текста, в котором будет осуществлен поиск.
    Полученный результат запишем в переменную $charset.

Преобразуем текстовую строку из исходной кодировки в кодировку utf-8 с помощью функции iconv и присвоим переменной $unicodeString.

  • Завершающим этапом будет поиск и замена строк в конвертированном тексте из переменной $unicodeString с помощью функции str_replace.
    str_replace($search, $replace, $unicodeString);
  • Полученные строки кода заключаем в функцию и присваиваем ей название — «mb_str_replace«.

    Таким образом получилась функция следующего содержания:

    Проверка:
    Проверяем работоспособность функции.
    Ищем слово «Исходный » в строке «Исходный кириллический текст для проверки» и заменяем на «».

    ТОП 16 PHP функций, что я использую каждый день

    // Март 30, 2013 | 2351 просмотров | комментариев (0)

    Решил написать ТОП 16 PHP функций, что я использую каждый день.
    Будет полезно как начинающим разработчикам, так и профессионалам (хотя у них этот список может отличаться).
    Это MUST HAVE функции, что обязательно нужно знать и уметь ими оперировать.

    int strlen ( string $string ) Возвращает длину строки string. bool empty ( mixed $var ) Проверяет, пуста ли переменная. string trim ( string $str [, string $charlist ] ) Удаляет пробелы (или другие символы) из начала и конца строки
    Эта функция возвращает строку str с удаленными из начала и конца строки пробелами. int intval ( mixed $var [, int $base = 10 ] ) Возвращает целое значение переменной var, используя указанное основание системы исчисления base для преобразования (по умолчанию основание равно 10). intval() нельзя использовать с объектами, попытка это сделать вызовет ошибку уровня E_NOTICE и вернет значение 1. mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] ) Выполняет поиск совпадений в строке subject с шаблоном pattern и заменяет их на replacement. mixed str_ireplace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] ) Регистро-независимый вариант функции str_replace().
    Эта функция возвращает строку или массив, в котором все вхождения search в subject заменены на replace (без учета регистра символов). Если не нужны сложные правила поиска/замены, использование этой функции предпочтительнее preg_replace() с модификатором i. string strip_tags ( string $str [, string $allowable_tags ] ) Удаляет HTML и PHP-теги из строки
    Эта функция пытается возвратить строку str, из которой удалены все NUL-байты, HTML и PHP теги. Для удаления тегов используется тот же автомат, что и в функции fgetss(). string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ‘UTF-8’ [, bool $double_encode = true ]]] ) Преобразует специальные символы в HTML-сущности mixed filter_var ( mixed $variable [, int $filter = FILTER_DEFAULT [, mixed $options ]] ) Фильтрует переменную с помощью определенного фильтра.

    • Фильтры валидации данных
    • Очищающие фильтры
    • Остальные фильтры
    • Флаги, используемые в фильтрах

    string date ( string $format [, int $timestamp = time() ] ) Форматирует вывод системной даты/времени.
    Возвращает строку, отформатированную в соответствии с указанным шаблоном format. Используется метка времени, заданная аргументом timestamp, или текущее системное время, если timestamp не задан. Таким образом, timestamp является необязательным и по умолчанию равен значению, возвращаемому функцией time(). int strtotime ( string $time [, int $now = time() ] ) Преобразует текстовое представление даты на английском языке в метку времени Unix.
    Первым параметром функции должна быть строка с датой на английском языке, которая будет преобразована в метку времени Unix (количество секунд, прошедших с 1 января 00:00:00 UTC) относительно метки времени, переданной в now, или текущего времени, если аргумент now опущен. string join ( string $glue , array $pieces ) Эта функция является псевдонимом: implode().
    Объединяет элементы массива с помощью строки glue. array explode ( string $delimiter , string $string [, int $limit ] ) Разбивает строку с помощью разделителя.
    Возвращает массив строк, полученных разбиением строки string с использованием delimiter в качестве разделителя. array array_merge ( array $array1 [, array $… ] ) Сливает один или большее количество массивов.
    Сливает элементы одного или большего количества массивов таким образом, что значения одного массива присоединяются к концу предыдущего. Результатом работы функции является новый массив. array array_unique ( array $array [, int $sort_flags = SORT_STRING ] ) Убирает повторяющиеся значения из массива.
    Принимает входной array и возвращает новый массив без повторяющихся значений. string json_encode ( mixed $value [, int $options = 0 ] ) Возвращает строку, содержащую JSON-представление value.

    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL
    23.02.2008, 13:04 #8