Помогите с регулярным выражением (разбор переменной на части)

Статус
В этой теме нельзя размещать новые ответы.
мало что понял из постановки задачи, но вот как то так:

PHP:
{
$str =$lastx['title'];
if (preg_match_all('/(.*?)(#|@)(.*?)(#|@)\s*\[(.*?)\]/i', $str, $match)) 
{
for ($j=0; $j<count($match[1]) ;$j++)
{
 $one = $match[1][$j];  
 $two = $match[3][$j];  
 $data = $match[5][$j];  

//Выводим за сегодня
$todaydate = date ("d.m.Y");
if ($todaydate == $data) {
  echo "$one";
 echo "$two - $data";
}
//Создаем даты на 7 дней
$datas = "$todaydate"; 
for($i=1;$i<=7;$i++) { 
$w_date = date("d.m.Y",strtotime("{$datas} + {$i} days")); 
//Выводим на неделю
if ($data == $w_date) {
  echo "$one";
 echo "$two - $data";
}
}
}
}
 
diavolic, это не то.

Суть в чем:
Из базы дергаем строки, которые содержат 2 названия и дату (т.е строку разбиваем на части регуляркой)

Нужна сортировка по дате. А она у нас формата 29.09.2010 , 30.09.2010, 01.10.2010 и т.д, и может идти в разброс.


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

while ($lastx = db_fetch_array($result))
{
1. тут мы разбиваем каждую строку регуляркой на части
2. в зависимости от условия (на сегодня, на неделю) по дате выводим информацию.
Но так как изначально в массиве строки идут не сортированными по дате получаеться что за один цикл выводиться данные и за сегодня и за другие дни.
}

Чтобы разделить на 2 блока "сегодня" и "на неделю" самый простой вариант сделать задачу на 2 скрипта, но это добавит запросов к базе.

А вот как отсортировать по дате мне не ясно. Т.к нужно учитывать не только день, а еще и месяц
 
достаточно просто вместо вывода в цикле, дописывать данные(можно с html разметкой) в отдельную переменную для каждого дня

т.е. заменить
Код:
echo "$one";
echo "$two - $data";

для дня
PHP:
$today_data .= "$one";
$today_data .= "$two - $data";

и для недели
PHP:
$week_data[$i] .= "$one";
$week_data[$i] .= "$two - $data";

на выходе будет строка $today_data и массив $week_data из 7 строк, для использования далее

PHP:
echo "за сегодня: $today_data<br />";
echo "за 5 день: $week_data[5]<br />";
// или вывод циклом
foreach ($week_data as $num=>$day_data)
{ echo "за $num день: $day_data<br />"; }
 
  • Нравится
Реакции: farm
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху