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

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

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

 

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

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

тема: Добавить ноль в дату
 
 автор: Владимир55   (05.11.2007 в 21:21)   письмо автору
 
 

В тексте встречаются даты в виде:

4.01.2008 17:13 > Стрелец
7.01.2008 4:43 > Козерог
9.01.2008 14:13 > Водолей
11.01.2008 21:44 > Рыбы

Можно ли превратить их в десятизначные знаки:
04.01.2008 17:13 > Стрелец
07.01.2008 4:43 > Козерог
09.01.2008 14:13 > Водолей
11.01.2008 21:44 > Рыбы

   
 
 автор: ddhvvn   (05.11.2007 в 22:13)   письмо автору
 
   для: Владимир55   (05.11.2007 в 21:21)
 

>В тексте встречаются даты в виде:

В готовом тексте или тексте, который Вы же (пользователь) создаете?

   
 
 автор: Владимир55   (05.11.2007 в 22:34)   письмо автору
 
   для: ddhvvn   (05.11.2007 в 22:13)
 

В готовом тексте, получаемом извне.

   
 
 автор: ProtoTeeP   (06.11.2007 в 00:56)   письмо автору
 
   для: Владимир55   (05.11.2007 в 22:34)
 

=) если в виде массива получить, то можно так сделать.


<?
    
foreach($TEXT as $res)
    {
    @list(
$A) = @explode ('.',$res,2);
        if(
strlen($A) == 1
        {
$res '0'.$res;}
    echo 
$res.'<br/>';
    }
?>

   
 
 автор: Владимир55   (06.11.2007 в 01:02)   письмо автору
 
   для: ProtoTeeP   (06.11.2007 в 00:56)
 

Спасибо!

   
 
 автор: exp   (06.11.2007 в 03:04)   письмо автору
 
   для: Владимир55   (06.11.2007 в 01:02)
 

по идее рабортает если искать по началам слов "\b"
<?
$string 
preg_replace"#\b(\d\.)#"'0$1'$string );
?>

но не так быстро как если в начале текста добавить перенос строки и искать по \n

<?
$string 
preg_replace"#\n(\d\.)#"'0$1'$string );

   
 
 автор: kasmanaft   (06.11.2007 в 05:52)   письмо автору
 
   для: exp   (06.11.2007 в 03:04)
 

> по идее рабортает если искать по началам слов "\b"
Но, наверное, затрагивает еще и время..

> но не так быстро как если в начале текста добавить перенос строки и искать по \n
А если текст с МакОС пришел ? :)
Да и перед первой строкой переноса нет..

   
 
 автор: Владимир55   (06.11.2007 в 10:14)   письмо автору
 
   для: kasmanaft   (06.11.2007 в 05:52)
 

С пробелами там нестабильность. Обычным функциями разложил на кусочки и заново собрал - так получилось надежнее всего...

   
 
 автор: exp   (06.11.2007 в 16:32)   письмо автору
 
   для: kasmanaft   (06.11.2007 в 05:52)
 

> А если текст с МакОС пришел

тогда наверное в самый раз воспользоваться "m" :) ,
прочитав Ваш ответ в соседней теме
<?
preg_replace
"#^\s*(\d\.)#m"'0$1'$string );
более-менее шустрое выражение , и пробелы зачистит

   
 
 автор: Саня   (06.11.2007 в 14:03)   письмо автору
 
   для: Владимир55   (05.11.2007 в 21:21)
 

<?php
$data 
"4.01.2008 17:13 > Стрелец 
7.01.2008 4:43 > Козерог 
9.01.2008 14:13 > Водолей 
11.01.2008 21:44 > Рыбы
1.1.2008 5:4 > просто дата"
;

function 
add_zero($m) {
  return 
sprintf("%02d.%02d.%d"$m[1], $m[2], $m[3]);
}

print 
preg_replace_callback("!(\d{1,2})\.(\d{1,2})\.(\d{4})!""add_zero"$data);

При желании можно добавить ведущий ноль и к времени:
<?
function add_zero($m) { return sprintf("%02d.%02d.%d %02d:%02d"$m[1], $m[2], $m[3], $m[4], m[5]); }
print 
preg_replace_callback("!(\d{1,2})\.(\d{1,2})\.(\d{4})\s(\d{1,2}):(\d{1,2})!""add_zero"$data);

   
Rambler's Top100
вверх

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