|
|
|
| есть данные:
5:40 Текст 1
6:04 Бла бла бла
7:45 Текст 2
10:28 Текст 5
|
нужно проверить время и если оно меньше условия (6:06) то вставить в начале каждой строчке <font> а в конце </font>
В принципе понятно что надо работать регулярными выражениями функцией preg_replace но как реализовать что-то не получается. | |
|
|
|
|
|
|
|
для: smit272
(16.05.2007 в 00:23)
| |
<?php
$file=file('messages.log');
foreach($file as $string)
{
ereg("([0-9]*)\:([0-9])", $string, $array);
$font=0;
if ($array[1]<6) $font=1;
elseif ($array[2]<6) $font=1;
if($font=1) $string='<font>'.$string.'</font>';
$new[]=$string;
}
?>
|
В результате получаем массив строчек $new. В принципе, в коде могут быть ошибки, так как написал с мобилы за 10 минут. | |
|
|
|
|
|
|
|
для: User
(16.05.2007 в 08:47)
| | неа, не работает.
Да и не разобрался в коде.
По идее можно проще реализовать
<?
$kod = "
7:40 Текст 1<br>
6:08 Бла бла бла<br>
7:45 Текст 2<br>
10:28 Текст 5<br>
";
$a = ereg_replace("([0-9]*)\:|ise", "\\1:", $kod);
echo $a;
?>
|
Как теперь вместо "\\1:" устроить проверку и если удовлетворяет условию вставить любой символ? | |
|
|
|
|
|
|
|
для: smit272
(16.05.2007 в 13:19)
| | применяйте preg_replace_callback | |
|
|
|
|
|
|
|
для: Trianon
(16.05.2007 в 13:36)
| | Или так
<?php
$str = '5:40 Текст1
6:04 Бла бла бла
7:45 Текст2
10:28 Текст5
';
preg_match_all("#\s*?(\d+)\:(\d+)[^\n]+#si", $str , $out, PREG_PATTERN_ORDER);
print_r($out);
$out2 = array();
$out3 = array();
for($i = 0; $i < count($out[0]); $i++)
{
if($out[1][$i] < 6) continue;
if (($out[1][$i] == 6) && ($out[2][$i] < 30)) continue;
array_push($out2, $out[0][$i] );
array_push($out3, '<font color="red">' . $out[0][$i] . '</font>');
}
echo '<hr>' . str_replace($out2, $out3, $str);
//вообще.то так и правда красивее :)
function
next_time($matches)
{
if (($matches[1] > 6) ||
($matches[1] == 6 && $matches[2] > 30))
return '<font color="red">' . $matches[0] . '</font>';
else return $matches[0];
}
echo preg_replace_callback("|(\d+)\:(\d+)[^\n]+|", "next_time", $str);
|
| |
|
|
|
|
|
|
|
для: EXP
(17.05.2007 в 01:28)
| | ребята спасибо, супер! | |
|
|
|
|
|
|
|
для: smit272
(18.05.2007 в 21:30)
| | Не стал создавтаь новую тему, надеюсь тут ответят:
А как разобрать эти символы?
5:40 Текст 1
6:04 Бла бла бла
7:45 Текст 2
10:28 Текст 5
|
Чтобы можно было отделить время от текста.
Чтобы потом было удобно отформатированный текст, допустим вставить в таблицу.
Заранее спасибО! | |
|
|
|
|
|
|
|
для: mr Bin
(21.05.2007 в 04:04)
| |
<?
$text = "5:40 Текст 1
6:04 Бла бла бла
7:45 Текст 2
10:28 Текст 5";
$lines = explode("\n", $text);
for ( $i = 0, $expld = array(); $i < count($lines); $i++ ) {
$expld[] = explode(" ", trim($lines[$i]), 2);
}
print_r($expld);
|
| |
|
|
|
|
|
|
|
для: Саня
(21.05.2007 в 09:16)
| | Саня, спасибо большое. | |
|
|
|