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

Форум Регулярные Выражения

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

 

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

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

тема: Как разбить число на группы по 4 цифры?
 
 автор: Belkin   (18.11.2011 в 01:35)   письмо автору
 
 

Смотрите, есть строка

<?php

$a 
'4444333322221111';

?>


Как можно сделать так, чтобы после каждого 4го символа был пробел, то есть строка приобрела такой вид - 4444 3333 2222 1111 ?

  Ответить  
 
 автор: Yuriev   (18.11.2011 в 03:10)   письмо автору
 
   для: Belkin   (18.11.2011 в 01:35)
 

number_format ()

  Ответить  
 
 автор: Sfinks   (18.11.2011 в 20:08)   письмо автору
 
   для: Yuriev   (18.11.2011 в 03:10)
 

Не думаю.... number_format форматирует по 3 цыфры.
Если количество знаков фиксированное - 16, то можно сделать через РВ:
<?php
  $s 
"1111222233334444";
  
$s preg_replace("#(\d{4})(\d{4})(\d{4})(\d{4})#","$1 $2 $3 $4",$s);
  echo 
$s;
?>
, а если число знаков в $s может быть переменное, то наверно ток через цикл.

  Ответить  
 
 автор: Belkin   (19.11.2011 в 13:47)   письмо автору
 
   для: Sfinks   (18.11.2011 в 20:08)
 

Спасибо ) но не могли бы Вы объяснить вот это - "#(\d{4})(\d{4})(\d{4})(\d{4})#","$1 $2 $3 $4" ?

  Ответить  
 
 автор: cheops   (19.11.2011 в 16:24)   письмо автору
 
   для: Belkin   (19.11.2011 в 13:47)
 

$1, $2, $3, $4 соответствует содержимому круглых скобок в регулярном выражении. Каждые круглые скобки соответствуют 4 символам, это обеспечивается при помощи {4}, а \d требует, чтобы этими символами были числа.

  Ответить  
 
 автор: Belkin   (19.11.2011 в 23:40)   письмо автору
 
   для: cheops   (19.11.2011 в 16:24)
 

Теперь все ясно, спасибо!

  Ответить  
 
 автор: duhon   (21.11.2011 в 13:37)   письмо автору
 
   для: Belkin   (18.11.2011 в 01:35)
 

попробуй такие варианты: (пример на php)
Вариант 1
echo preg_replace('/\d{4}/', "$0 ", "1111222233334444555ss56666");

на выходе 1111 2222 3333 4444 555ss5666 6
Тобиш после каждых 4 цыфр будет пробел, даже после последней цыфры в тексте. Но если в тексте не точное количество цыфр, количество символов в строке не делиться на 4, или в тексте есть не только цыфры, то будет небольшая каша.

Вариант 2
echo preg_replace('/\G\d{4}/', "$0 ", "1111222233334444555ss56666");

на выходе 1111 2222 3333 4444 555ss56666
Тобиш тоже самое что в 1 варианте но после первого сбоя уже пробелы ставить не будет. Также этот вариант работает только в php(PCRE) регулярках

  Ответить  
 
 автор: Belkin   (27.11.2011 в 16:26)   письмо автору
 
   для: duhon   (21.11.2011 в 13:37)
 

Учту, спасибо!

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

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