За последние 24 часа нас посетили 21460 программистов и 1695 роботов. Сейчас ищут 1876 программистов ...

Замена регистра!

Тема в разделе "Регулярные выражения", создана пользователем KingArtur, 11 июл 2009.

  1. KingArtur

    KingArtur Активный пользователь

    С нами с:
    11 июл 2009
    Сообщения:
    6
    Симпатии:
    0
    Ребят помогите плз заменить большие буквы на маленькие!чёт я конкретно туплю)

    PHP:
    1.     $patterns =     array (#[А-Я]#);
    2.     $replacements = array(#[я-а]#);
    3.  
    4.     $linktext=preg_replace($patterns, $replacements, $linktext);

    не помогает! может тут есть ошибка????
     
  2. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
  3. KingArtur

    KingArtur Активный пользователь

    С нами с:
    11 июл 2009
    Сообщения:
    6
    Симпатии:
    0
    это не то что мне надо) Если кто работал с ВакоВики, то знают что есть ВакаИмена, так вот) мне надо между ними поставить пробелы!
    было вот так: ДругаяСтраницаПроНTMLКод
    пропускаем через это:
    PHP:
    1.  preg_match_all("([А-ЯA-Z])", $linktext,$matches,PREG_OFFSET_CAPTURE,1);
    2.      $count=0;
    3.      $i=0;
    4.      foreach ($matches[0] as $bl)
    5.      {        
    6.           if ($matches[0][$i-1]!=NULL && $matches[0][$i+1]!=NULL):
    7.                 if ((($matches[0][$i][1]-$matches[0][$i-1][1])>1) && (($matches[0][$i+1][1]-$matches[0][$i][1])>1)):
    8.                     $linktext=str_replace($bl[0]," ".strtolower(substr($linktext,$bl[1]+$count,1)),$linktext);    
    9.                     $count=$count+1;
    10.                elseif((($matches[0][$i][1]-$matches[0][$i-1][1])>1) && (($matches[0][$i+1][1]-$matches[0][$i][1])==1)):
    11.                     $linktext=str_replace($bl[0]," ".$bl[0],$linktext);    
    12.                     $count=$count+1;
    13.                endif;
    14.            else:
    15.                if (!((($matches[0][$i][1]-$matches[0][$i-1][1])==1) && ($matches[0][$i][1]==strlen($linktext)-$count-1))):
    16.                     $linktext=str_replace($bl[0]," ".strtolower(substr($linktext,$bl[1]+$count,1)),$linktext);
    17.                     $count=$count+1;
    18.                endif;
    19.            endif;
    20.           $i++;
    21.      }
    И получаем вот это: Другая страница про HTML код
     
  4. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    PHP:
    1. <?
    2. $str="ДругаяСтраницаПроНTMLКод";
    3. $res='';
    4. for($i=0,$c=strlen($str);$i<$c;$i++){
    5.     if($str[$i]==strtoupper($str[$i]) &&
    6.         ($str[$i+1]!==strtoupper($str[$i+1]) || $str[$i-1]==strtolower($str[$i-1])) &&
    7.           !is_numeric($str[$i]) &&
    8.             $i!==0){
    9.                   $res.=" ".(!$str[$i+1] || $str[$i+1]!==strtoupper($str[$i+1])?strtolower($str[$i]):$str[$i]);
    10.     }else{
    11.         $res.=$str[$i];
    12.     }
    13. }
    14. print $res;
    15. ?>
     
  5. KingArtur

    KingArtur Активный пользователь

    С нами с:
    11 июл 2009
    Сообщения:
    6
    Симпатии:
    0
    Mr.M.I.T. Спасибо, огромное! У меня только один вопрос что означает точка в этом случае: " $res. "
     
  6. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Конкатенацию строк.
     
  7. KingArtur

    KingArtur Активный пользователь

    С нами с:
    11 июл 2009
    Сообщения:
    6
    Симпатии:
    0
    Apple ты меня конечно извини, но я не знаю такого слова)))))
    Ребят и ещё к вам небольшая просьба, может кто проверить этот код!!!! например тут не работает строчка: PHP!!!! Она выдаёт: P hP, или СтудентыМАИпишет как Студенты мАИ!! Просто сделанное своей рукой приятней и интересно почяему не рабоатет! Так как фразы ДругаяСтраницаПроНTMLКод и ДругаяСтраницаПроНTML прекрасно преобразовываются!!!!!! Буду очень благодарен, заранее спасибо!

    PHP:
    1.  preg_match_all("([А-ЯA-Z])", $linktext,$matches,PREG_OFFSET_CAPTURE,1);
    2.      $count=0;
    3.      $i=0;
    4.      foreach ($matches[0] as $bl)
    5.      {        
    6.            if ($matches[0][$i-1]!=NULL && $matches[0][$i+1]!=NULL):
    7.                  if ((($matches[0][$i][1]-$matches[0][$i-1][1])>1) && (($matches[0][$i+1][1]-$matches[0][$i][1])>1)):
    8.                      $linktext=str_replace($bl[0]," ".strtolower(substr($linktext,$bl[1]+$count,1)),$linktext);    
    9.                      $count=$count+1;
    10.                elseif((($matches[0][$i][1]-$matches[0][$i-1][1])>1) && (($matches[0][$i+1][1]-$matches[0][$i][1])==1)):
    11.                      $linktext=str_replace($bl[0]," ".$bl[0],$linktext);    
    12.                      $count=$count+1;
    13.                endif;
    14.            else:
    15.                if (!((($matches[0][$i][1]-$matches[0][$i-1][1])==1) && ($matches[0][$i][1]==strlen($linktext)-$count-1))):
    16.                      $linktext=str_replace($bl[0]," ".strtolower(substr($linktext,$bl[1]+$count,1)),$linktext);
    17.                      $count=$count+1;
    18.                endif;
    19.            endif;
    20.            $i++;
    21.      }