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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Из обычного регистра сделать ПрЫгаЮщИй
 
 автор: gRoot   (06.03.2010 в 19:22)   письмо автору
 
 

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

Например пользователь пишет "Привет", а в базу заносится "ПрИвЕт"

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

Прошу..Правда ето только для английських слов...

<?php
$str 
"Hello world";
for(
$i=0;$i<strlen($str);$i++)
{
if(
$i%== 0)
{
$str[$i] = strtoupper($str[$i]);
}
}
echo 
$str;
?>

  Ответить  
 
 автор: ddhvvn   (06.03.2010 в 20:22)   письмо автору
 
   для: Марко   (06.03.2010 в 19:39)
 

>.Правда ето только для английських слов...

Почему?

  Ответить  
 
 автор: Марко   (06.03.2010 в 20:37)   письмо автору
 
   для: ddhvvn   (06.03.2010 в 20:22)
 

Если надо и для руских то нада исползивать mb_strlen() и mb_strtoupper().Правда надо скачать модуль которий разрешает исползивать mb_

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

Это почему так? mb_strlen() и mb_strtoupper() для русских букв?

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

Ну у меня так(strlen,strtoupper) не работает для руской и украинской раскладки.

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

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

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

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

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

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

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

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

  Ответить  
 
 автор: 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;}

  Ответить  
 
 автор: 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 в 20:10)   письмо автору
 
   для: Akdmeh   (07.03.2010 в 10:14)
 

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

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

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

  Ответить  
 
 автор: Николай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   (08.03.2010 в 08:15)   письмо автору
 
   для: Николай2357   (08.03.2010 в 07:18)
 

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

  Ответить  
 
 автор: Николай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;

  Ответить  
Rambler's Top100
вверх

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