Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Из обычного регистра сделать ПрЫгаЮщИй

Сообщения:  [1-10]   [11-17] 

 
 автор: Николай2357   (08.03.2010 в 08:54)   письмо автору
 
   для: gRoot   (08.03.2010 в 08:15)
 

Если текст большой, есть смысл вынести подсчет строки за цикл, как советовали выше. Если маленький - особого смысла нет, так как лишнее присвоение:
<?php  

    $str 
'Привет, мир!'
    
$new ''

    
mb_internal_encoding('utf-8');     
    
$str mb_strtolower($str); 
    
$cnt mb_strlen($str);  
 
    for(
$i 0$i $cnt $i++) 
       if(
rand(12) == 1
           
$new .= mb_strtoupper(mb_substr($str$i1)); 
       else 
           
$new .= mb_substr($str$i1); 
    
    echo 
$new;

  Ответить  
 
 автор: gRoot   (08.03.2010 в 08:15)   письмо автору
 
   для: Николай2357   (08.03.2010 в 07:18)
 

Спасибо большое! Ваш вариант отлично работает :)

  Ответить  
 
 автор: Николай2357   (08.03.2010 в 07:18)   письмо автору
 
   для: gRoot   (07.03.2010 в 20:10)
 

>Я где-то слышал, что у мультибайтных кодировок это невозможно.
Это действительно так. Ну а если нужен полный бардак с регистрами, то тогда так можно:
<?php 

    $str 
'Привет, мир!';
    
$new '';

    
mb_internal_encoding('utf-8');    
    
$str mb_strtolower($str);
        
    for(
$i 0$i mb_strlen($str); $i++)
       if(
rand(12) == 1)
           
$new .= mb_strtoupper(mb_substr($str$i1));
       else
           
$new .= mb_substr($str$i1);
   
    echo 
$new;

  Ответить  
 
 автор: gRoot   (07.03.2010 в 20:32)   письмо автору
 
   для: gRoot   (07.03.2010 в 20:10)
 

Да. Простое преобразование всего текста $text = mb_strtoupper($text); работает. Но по символьные из массива не хочет

  Ответить  
 
 автор: gRoot   (07.03.2010 в 20:10)   письмо автору
 
   для: Akdmeh   (07.03.2010 в 10:14)
 

И это не помогло. Я даже пробывал так: перед тем как преобразования делать перегонял текст при помощи iconv в win-кодировку, а потом обратно в utf.
Но реакция от mb_internal_encoding() другая. Русский текст вообще исчезает. Это никак не связано, что мы utf кодировку разбиваем на символьные массивы? Я где-то слышал, что у мультибайтных кодировок это невозможно.

  Ответить  
 
 автор: Akdmeh   (07.03.2010 в 10:14)   письмо автору
 
   для: gRoot   (07.03.2010 в 08:30)
 

mb_internal_encoding() - установите кодировку явно.
http://php.su/functions/?mb-internal-encoding

  Ответить  
 
 автор: gRoot   (07.03.2010 в 08:30)   письмо автору
 
   для: gRoot   (07.03.2010 в 07:03)
 

Хм. У меня mbstring enabled, а с utf8 не работает или вообще текст режет.

Использую вот так
function crazyreg ($text) {
for($i=0; $i<mb_strlen($text); $i++) { 
 if($i%2 == 0) {
   $text[$i] = mb_strtoupper($text[$i]);
 }
 else 
 {
    $text[$i] = mb_strtolower($text[$i]);
 }

}
return $text;}

  Ответить  
 
 автор: gRoot   (07.03.2010 в 07:03)   письмо автору
 
   для: Николай2357   (06.03.2010 в 22:36)
 

>А орядок важен?
В смысле порядок? Чтобы строго одна строчная, а следующая заглавная, а потом опять строчная? Нет. НаобОРоТ НуЖЕн ПолНыЙ бЕсПОряДоК. Хотя для начала и такой строгий беспорядок сойдёт.

  Ответить  
 
 автор: Николай2357   (06.03.2010 в 22:36)   письмо автору
 
   для: gRoot   (06.03.2010 в 19:22)
 

А орядок важен?

  Ответить  
 
 автор: Марко   (06.03.2010 в 20:48)   письмо автору
 
   для: sim5   (06.03.2010 в 20:46)
 

>И что, а вышеуказанные для русских и украинских написали значит? Русский текст может быть в кодировке 1251, и с ним прекрасно справится и strlen, и strtoupper и т.п., а модуль mb_string не для русских или украинских, а для мультибайтных строк, utf-8 например.
Да ти прав я не спорю,просто у меня било виставлено charset = utf8.

  Ответить  

Сообщения:  [1-10]   [11-17] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования