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

Статус
В этой теме нельзя размещать новые ответы.

twist

Создатель
Регистрация
16 Мар 2007
Сообщения
40
Реакции
3
Подскажите плиз как реализовать обработку строки, так чтобы вставлять пробелы, через заданное количество символов. К примеру,
строка "D86766CC2FF1D065"
обработать к виду "D8 67 66 CC 2F F1 D0 65" те через постоянное количество символов, каждые 2.
или
строка "2108549145863"
к виду "2 108549 145863" те через разное количество символов.
Я тут в затуп впал не могу сообразить.
 
Ну эт просто
PHP:
$line="D86766CC2FF1D065";
$result='';
$count=3;//через сколько вставлять
for($i=0;$i<strlen($line);$i+=$count){
	$result.=substr($line, $i, $count)." ";
}
echo $result;

Естественно последние символы будут столько сколько будут.
 
А вот моя версия: (чего она у меня большая получилась)

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(1, 3);
			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>';
 
thank's All
это гораздо элегантнее чем я думал. Я планировал заносить каждую Пару в массив а затем выводить как надо.

А через разное количество символов писать отдельную функцию и попутно обрабатывать? или может покороче можно как?
 
Да. очень долгий метод будет тогда. Универсальный метод. Можно задать от 2 до 2 например и будет одинаковый диапазон.
PHP:
$line="D86766CC2FF1D065";
$result='';
$diapazon=array(2, 3); //тут диапазон случайностей
$i=0;
do{
	$count=rand($diapazon[0], $diapazon[1]);
	$result.=substr($line, $i, $count)." ";
	$i+=$count;
}while ($i<strlen($line));

echo $result;
Спасибо можно и кнопкой.
 
Кто короче? :)

PHP:
  $l_Str = "D86766CC2FF1D065";
  preg_match_all("|.{2}+|", $l_Str, $l_Entries, PREG_PATTERN_ORDER);
  print join(" ", $l_Entries[0]);
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху