На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ALXR
  
    > str_replace
      Мне нужно нечувствительный к регистру (верхний/нижний) вариант этой функции.

      Есть str_ireplace, но он доступен только с 5-й версии php... а в 4-й?
        Как вариант могу предложить использовать сначала strtolower(), а потом уже вызывать str_replace(). Либо можно еще и ... дальше мысль останавливается :D

        А если подробнее в чем задача?
          Пиши функцию ручками. Или регулярные выражения используй.
          ExpandedWrap disabled
            echo preg_replace('/([cC][лЛ][вВ][оО])/i','<b>\1</b>',$str);
            Можно и вариант Тишайшего... а задача в том, чтобы заменить [MY_TEG] - на некий MY_TEXT, не зависимо от регистра My_tEg

            ???
              ExpandedWrap disabled
                function strgetc(&$str)
                {
                   $c=$str[0];
                   $str=substr($str,1);
                   return $c;
                }
                 
                function strnocase($str)
                {
                  $lstr=strCyrEnToLower($str);
                  $ustr=strCyrEnToUpper($str);
                 
                  unSet($str);
                 
                  $nstr='';
                 
                  while(strlen($str))
                    $nstr.='['.preg_quote(strgetc($lstr[0]).strgetc($ustr[0])).']';
                 
                  return $nstr;
                }
                 
                function strCyrEnToLower($str)
                {
                   return strtr(strToLower($str),'абвгдеёжзийклмнопрстуфхцчшщъыьэюя','АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ');
                }
                 
                function strCyrEnToUpper($str)
                {
                   return strtr(strToUpper($str),'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ','абвгдеёжзийклмнопрстуфхцчшщъыьэюя');
                }
                 
                .................
                echo preg_replace('/'.strnocase($strtoreplace).'/i',$strtoplace,$str);
                Цитата
                strCyrEnToLower
                зачем здесь эта функция? Есть же функции попроще, превращающие регистр в маленький или большой... ?

                Можно объяснить назначение каждой отдельной функции???
                  Budda, а зависит от настроек Апача. Часто бывает, что strtolower для кириллицы не работает.
                    Есть и "нормальные" типа strToLower, strToUpper, а я хочу фильтеперсовую:);

                    strgetc - возвращает первый символ из строки и удаляет его из исходной.
                    strnocase - для преобразования строк вроде 'Слово' в строки вроде '[сС][лЛ][оО][вВ][оО]', чтобы потом вставлять в регулярные выражения.

                    preg_quote - встроенная функция. Ставит перед "опасными" для регулярных выражений символами знак \.
                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0,0243 ]   [ 15 queries used ]   [ Generated: 27.04.24, 08:48 GMT ]