форматирование строковых данных

Тема в разделе "PHP", создана пользователем twist, 23 окт 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. twist

    twist Создатель

    Регистр.:
    16 мар 2007
    Сообщения:
    39
    Симпатии:
    2
    Подскажите плиз как реализовать обработку строки, так чтобы вставлять пробелы, через заданное количество символов. К примеру,
    строка "D86766CC2FF1D065"
    обработать к виду "D8 67 66 CC 2F F1 D0 65" те через постоянное количество символов, каждые 2.
    или
    строка "2108549145863"
    к виду "2 108549 145863" те через разное количество символов.
    Я тут в затуп впал не могу сообразить.
     
  2. Hemi-Sync

    Hemi-Sync Постоялец

    Регистр.:
    17 дек 2006
    Сообщения:
    88
    Симпатии:
    38
    Ну эт просто
    PHP:
    $line="D86766CC2FF1D065";
    $result='';
    $count=3;//через сколько вставлять
    for($i=0;$i<strlen($line);$i+=$count){
        
    $result.=substr($line$i$count)." ";
    }
    echo 
    $result;
    Естественно последние символы будут столько сколько будут.
     
  3. DIAgen

    DIAgen Постоялец

    Регистр.:
    30 окт 2006
    Сообщения:
    134
    Симпатии:
    72
    А вот моя версия: (чего она у меня большая получилась)

    PHP:
    function random_probel ($stroka$count_insert$insert$random_insert false) {
        
    $line_stroka strlen ($stroka);
        
    $count_for 0;
        for(
    $i=0$i $line_stroka$i++) {
            if(
    $random_insert) {
                
    $rand_tmp rand(13);
                if(
    $rand_tmp == 3) {
                    
    $return_text .= $insert.$stroka[$i];
                } else {
                    
    $return_text .= $stroka[$i];
                }
            } else {
                if(
    $count_for == $count_insert) {
                    
    $return_text .= $insert.$stroka[$i];
                    unset(
    $count_for);
                } else {
                    
    $return_text .= $stroka[$i];
                }
                
    $count_for ++;
            }
        }
        return 
    $return_text;
    }

    echo 
    random_probel ('D86766CC2FF1D065'2' ') . '<br>';
    echo 
    random_probel ('D86766CC2FF1D065'2'_') . '<br>';
    echo 
    random_probel ('D86766CC2FF1D065'2' 'true). '<br>';
    echo 
    random_probel ('D86766CC2FF1D065'2'_'true). '<br>';
     
    twist нравится это.
  4. twist

    twist Создатель

    Регистр.:
    16 мар 2007
    Сообщения:
    39
    Симпатии:
    2
    thank's All
    это гораздо элегантнее чем я думал. Я планировал заносить каждую Пару в массив а затем выводить как надо.

    А через разное количество символов писать отдельную функцию и попутно обрабатывать? или может покороче можно как?
     
  5. Hemi-Sync

    Hemi-Sync Постоялец

    Регистр.:
    17 дек 2006
    Сообщения:
    88
    Симпатии:
    38
    Да. очень долгий метод будет тогда. Универсальный метод. Можно задать от 2 до 2 например и будет одинаковый диапазон.
    PHP:
    $line="D86766CC2FF1D065";
    $result='';
    $diapazon=array(23); //тут диапазон случайностей
    $i=0;
    do{
        
    $count=rand($diapazon[0], $diapazon[1]);
        
    $result.=substr($line$i$count)." ";
        
    $i+=$count;
    }while (
    $i<strlen($line));

    echo 
    $result;
    Спасибо можно и кнопкой.
     
    twist нравится это.
  6. gregzem

    gregzem

    Регистр.:
    21 окт 2007
    Сообщения:
    200
    Симпатии:
    63
    Кто короче? :)

    PHP:
      $l_Str "D86766CC2FF1D065";
      
    preg_match_all("|.{2}+|"$l_Str$l_EntriesPREG_PATTERN_ORDER);
      print 
    join(" "$l_Entries[0]);

     
Статус темы:
Закрыта.