|
|
|
| Добрый день, помогите всё разложить по полочкам, т. к. я сама ... понятие пхп узнала неделю назад
Как весь текст занести в переменые???
Есть штмл
//блок №1
<tr bgcolor="#333333">
<td class="title" colspan="4" height="18"> <b>StroyMash</b> - статья 125 Т.К.</td>
</tr>
<tr bgcolor="#333333">
<td class="match-light" height="18" width="45"> 12:40</td>
<td class="match-light" colspan="3" align="right" width="286">July 8 </td>
</tr>
//блок №1.1 (подблок)
<tr>
<td colspan="4" height="1"></td>
</tr>
<tr bgcolor="#cfcfcf">
<td height="18" width="45"> приговор вынесен: 18:45</td>
<td align="right" width="118">Аскар Минликиев</td>
<td align="center" width="50">9 месяцев</td>
<td width="118">ИК-2</td>
</tr>
//блок №1.2 (подблок)
<tr>
<td colspan="4" height="1"></td>
</tr>
<tr bgcolor="#cfcfcf">
<td height="18" width="45"> время исполнения: 18:15</td>
<td align="right" width="118">Юрий Громов</td>
<td align="center" width="50">7 месяцев</td>
<td width="118">ИК-2</td>
</tr>
<tr bgcolor="#111111"><td colspan="4" height="4"></td></tr><tr><td colspan="4" height="1"></td></tr>
//блок №2
<tr bgcolor="#333333">
<td class="title" colspan="4" height="18"> <b>StroyMash_Kazan</b> - статья 72 Т.К.</td>
</tr>
<tr bgcolor="#333333">
<td class="match-light" height="18" width="45"> 12:40</td>
<td class="match-light" colspan="3" align="right" width="286">July 8 </td>
</tr>
//блок №2.1 (подблок)
<tr>
<td colspan="4" height="1"></td>
</tr>
<tr bgcolor="#cfcfcf">
<td height="18" width="45"> время исполнения: 10:45</td>
<td align="right" width="118">Александр Чекмарев</td>
<td align="center" width="50">3 месяца</td>
<td width="118">ИК-8/3</td>
</tr>
<tr>
<td colspan="4" height="1"></td>
</tr>
<tr bgcolor="#111111"><td colspan="4" height="4"></td></tr><tr><td colspan="4" height="1"></td></tr>
//блок №3 и т. д.
|
Надо всё занести в переменные ...
После, семидневного танца вокруг книги по php, в голову заполз следующий листинг:
//фильтруем текст
preg_match_all ("/<tr bgcolor=\"#333333\"><td class=\"title\" colspan=\"4\" height=\"18\">(.+?)<\/td><\/tr><tr bgcolor=\"#333333\"><td class=\"match-light\" height=\"18\" width=\"45\">(.+?)<\/td><td class=\"match-light\" colspan=\"3\" align=\"right\" width=\"286\">(.+?)<\/td><\/tr><tr><td colspan=\"4\" height=\"1\"><\/td><\/tr><tr bgcolor=\"#cfcfcf\"><td height=\"18\" width=\"45\">(.+?)<tr><td colspan=\"4\" height=\"1\"><\/td><\/tr><tr bgcolor=\"#111111\"><td colspan=\"4\" height=\"4\"><\/td><\/tr><tr><td colspan=\"4\" height=\"1\"><\/td><\/tr>/isU", $line, $prog);
for($i=0;$i<count($prog[1]);$i++)
{
$title = $prog[1][$i];
preg_match ("/<b>(.+?)</b>/isU", $title, $page);
$time_local = $prog[2][$i];
$match_month_day = $prog[3][$i];
$title_more = $prog[4][$i];
//дофильтровываем текст
preg_match_all ("#<td height=\"18\" width=\"45\">(.+?)</td><td align=\"right\" width=\"118\">(.+?)</td><td align=\"center\" width=\"50\">(.+?)</td><td width=\"118\">(.+?)</td></tr>#isU", $title_more, $prog_1);
for($j=0;$j<count($prog_1[2]);$j++)
{
$time_live = $prog_1[1][j];
$home_team = $prog_1[2][j];
$bill = $prog_1[3][j];
$away_team = $prog_1[4][j];
}
|
Теперь, внимание уважаемые Знатоки, вопрос: Будет ли данный листинг работать? ... Короче как весь текст занести в переменые???
Помагите пожалуйста!!! | |
|
|
|
|
|
|
|
для: Лилия
(10.07.2008 в 15:38)
| | Очень погано разбирать сий суровый текст...
Я попробовал так:
<?php
require_once('xml-parse.php');
$html = <<<HTMLL
<tr bgcolor="#333333">
<td class="title" colspan="4" height="18"> <b>StroyMash</b> - статья 125 Т.К.</td>
</tr>
<tr bgcolor="#333333">
<td class="match-light" height="18" width="45"> 12:40</td>
<td class="match-light" colspan="3" align="right" width="286">July 8 </td>
</tr>
//блок №1.1 (подблок)
<tr>
<td colspan="4" height="1"></td>
</tr>
<tr bgcolor="#cfcfcf">
<td height="18" width="45"> приговор вынесен: 18:45</td>
<td align="right" width="118">Аскар Минликиев</td>
<td align="center" width="50">9 месяцев</td>
<td width="118">ИК-2</td>
</tr>
//блок №1.2 (подблок)
<tr>
<td colspan="4" height="1"></td>
</tr>
<tr bgcolor="#cfcfcf">
<td height="18" width="45"> время исполнения: 18:15</td>
<td align="right" width="118">Юрий Громов</td>
<td align="center" width="50">7 месяцев</td>
<td width="118">ИК-2</td>
</tr>
<tr bgcolor="#111111"><td colspan="4" height="4"></td></tr><tr><td colspan="4" height="1"></td></tr>
//блок №2
<tr bgcolor="#333333">
<td class="title" colspan="4" height="18"> <b>StroyMash_Kazan</b> - статья 72 Т.К.</td>
</tr>
<tr bgcolor="#333333">
<td class="match-light" height="18" width="45"> 12:40</td>
<td class="match-light" colspan="3" align="right" width="286">July 8 </td>
</tr>
//блок №2.1 (подблок)
<tr>
<td colspan="4" height="1"></td>
</tr>
<tr bgcolor="#cfcfcf">
<td height="18" width="45"> время исполнения: 10:45</td>
<td align="right" width="118">Александр Чекмарев</td>
<td align="center" width="50">3 месяца</td>
<td width="118">ИК-8/3</td>
</tr>
<tr>
<td colspan="4" height="1"></td>
</tr>
<tr bgcolor="#111111"><td colspan="4" height="4"></td></tr><tr><td colspan="4" height="1"></td></tr>
//блок №3 и т. д.
HTMLL;
//echo "<table>$html</table>";
echo '<pre>';
//print_r($out);
$pattern = '#<td
([\s]+class="([^"]+)")?
([\s]+colspan="([^"]+)")?
([\s]+align="([^"]+)")?
([\s]+height="([^"]+)")?
([\s]+width="([^"]+)")?
>(.*)</td>#x';
preg_match_all($pattern, $html, $out, PREG_SET_ORDER);
//print_r($out);
$res = array();
$line = $lines = array();
foreach($out as $row)
{
if($row[4] == 4 && $row[8] == 1)
{
if(!empty($line))
{
$lines[] = $line;
$line = array();
}
}
else if($row[2] == 'title')
{
if(!empty($line))
{
$lines[] = $line;
$line = array();
}
if(!empty($lines))
{
$res[] = array('title' => $title, 'lines' => $lines);
$lines = array();
}
$title['name'] = $row[11];
}
else if($row[2] == 'match-light')
$title[$row[4] == '3' ? 'date':'time' ] = $row[11];
else if($row[8] == 18 && $row[10] == 45)
$line['act'] = $row[11];
else if($row[6] == 'right' && $row[10] == 118)
$line['person'] = $row[11];
else if($row[6] == 'center' && $row[10] == 50)
$line['weight'] = $row[11];
else if($row[6] == 0 && $row[8] == 0 && $row[10] == 118)
$line['location'] = $row[11];
}
if(!empty($line))
$lines[] = $line;
if(!empty($lines))
$res[] = array('title' => $title, 'lines' => $lines);
print_r($res);
?>
|
Работает весьма эмпирически.
Лучше бы найти более детерминированный источник... | |
|
|
|