|
|
|
| Есть таблица
<TABLE cellSpacing=1 cellpadding=2 class=text>
<TBODY>
<TR>
<TD class=bg1 colSpan=2><font class=txtb>НАЗВАНИЕ РАЗДЕЛА 1</font></TD></TR>
<TR class=bg2>
<TD><font class=txtb>НАИМЕНОВАНИЕ</font></TD>
<TR class=bg2>
<TD><font class=txtb>НАИМЕНОВАНИЕ</font></TD>
<TD> ДАННЫЕ</TD></TR>
<TR class=bg2>
<TD><font class=txtb>НАИМЕНОВАНИЕ</font></TD>
<TD> ДАННЫЕ</TD></TR>
TD class=bg1 colSpan=2><font class=txtb>НАЗВАНИЕ РАЗДЕЛА 2</font></TD></TR>
<TR class=bg2>
<TD><font class=txtb>НАИМЕНОВАНИЕ</font></TD>
<TR class=bg2>
<TD><font class=txtb>НАИМЕНОВАНИЕ</font></TD>
<TD> ДАННЫЕ</TD></TR>
<TR class=bg2>
<TD><font class=txtb>НАИМЕНОВАНИЕ</font></TD>
<TD> ДАННЫЕ</TD></TR>
</TBODY></TABLE>
|
Надо выдернуть и вывести данные в виде:
НАЗВАНИЕ РАЗДЕЛА 1
НАИМЕНОВАНИЕ - ДАННЫЕ
НАИМЕНОВАНИЕ - ДАННЫЕ
НАИМЕНОВАНИЕ - ДАННЫЕ
НАЗВАНИЕ РАЗДЕЛА 2
НАИМЕНОВАНИЕ - ДАННЫЕ
НАИМЕНОВАНИЕ - ДАННЫЕ
НАИМЕНОВАНИЕ - ДАННЫЕ
Пытался вырезать
preg_match_all('~<TD class=bg1 colSpan=2><font class=txtb>(.*?)</font></TD>~is', $content , $text2);
preg_match_all('~<TD><font class=txtb>(.*?)</font></TD>
<TD>(.*?)</TD>~is', $content , $text);
|
Но в цикле не получается скомпоновать нужный формат вывода(( Помогите советом пож | |
|
|
|
|
|
|
|
для: куч1963
(05.08.2014 в 18:47)
| | [url]http://sandbox.onlinephpfunctions.com/code/eb15d80870364c4b66aa0226dd77857087c 1ceb9[/url]
<?php
$str='<TABLE cellSpacing=1 cellpadding=2 class=text>
<TBODY>
<TR>
<TD class=bg1 colSpan=2><font class=txtb>НАЗВАНИЕ РАЗДЕЛА 1</font></TD></TR>
<TR class=bg2>
<TD><font class=txtb>НАИМЕНОВАНИЕ</font></TD>
<TR class=bg2>
<TD><font class=txtb>НАИМЕНОВАНИЕ</font></TD>
<TD> ДАННЫЕ</TD></TR>
<TR class=bg2>
<TD><font class=txtb>НАИМЕНОВАНИЕ</font></TD>
<TD> ДАННЫЕ</TD></TR>
TD class=bg1 colSpan=2><font class=txtb>НАЗВАНИЕ РАЗДЕЛА 2</font></TD></TR>
<TR class=bg2>
<TD><font class=txtb>НАИМЕНОВАНИЕ</font></TD>
<TR class=bg2>
<TD><font class=txtb>НАИМЕНОВАНИЕ</font></TD>
<TD> ДАННЫЕ</TD></TR>
<TR class=bg2>
<TD><font class=txtb>НАИМЕНОВАНИЕ</font></TD>
<TD> ДАННЫЕ</TD></TR>
</TBODY></TABLE>';
$n=preg_match_all("/<font[^>]+?>([А-ЯЁ\s\d]+)<\/font>/u",$str,$m);
for($i=0;$i<$n;$i++){
echo $m[1][$i]."\n";
}
?>
|
P.S. What is fuck with links on this site??? | |
|
|
|
|
|
|
|
для: Deed
(11.08.2014 в 23:11)
| | Warning: preg_match_all() [function.preg-match-all]: Compilation failed: nothing to repeat at offset 13
что за бодяга?
Немного не то по функционалу. Выдергивается все из <font, а мне надо получить форматированный вывод
как вариант
<TR>
<TD class=bg1 colSpan=2><font class=txtb>НАЗВАНИЕ РАЗДЕЛА 1</font></TD></TR>
<TR class=bg2>
<TD><font class=txtb>НАИМЕНОВАНИЕ</font></TD>
<TD> ДАННЫЕ</TD></TR>
вывести в виде
<h2>НАЗВАНИЕ РАЗДЕЛА 1
НАИМЕНОВАНИЕ -- ДАННЫЕ
<h2>НАЗВАНИЕ РАЗДЕЛА 2
НАИМЕНОВАНИЕ 2 -- ДАННЫЕ 2 | |
|
|
|
|
|
|
|
для: куч1963
(11.08.2014 в 23:49)
| | Вверху ссылка (пробелы убрать) на онлайн-компилятор.
И пусть админ ЭТОГО сайта поправит парсер ссылок.
Позорище какое...
А, невнимательно прочитал суть проблемы. Но уже только завтра смогу помочь.
Всех благ! | |
|
|
|
|
|
|
|
для: Deed
(12.08.2014 в 00:00)
| | Спасибо за помощь. | |
|
|
|
|
|
|
|
для: куч1963
(05.08.2014 в 18:47)
| | У меня как- то так получилось:
(Выводится много лишнего, но это чтоб тебе проще было разобраться в коде)
<?php
$text= '
<table cellSpacing="1" cellpadding="2" border="1" class="text">
<tbody>
<tr>
<td class="bg1" colSpan="2"><font class="txtb">НАЗВАНИЕ РАЗДЕЛА 1</font></td>
</tr>
<tr class="bg2">
<td><font class="txtb">НАИМЕНОВАНИЕ1_1</font></td>
<td> ДАННЫЕ1_1</td>
</tr>
<tr class="bg2">
<td><font class="txtb">НАИМЕНОВАНИЕ1_2</font></td>
<td> ДАННЫЕ1_2</td>
</tr>
<tr class="bg2">
<td><font class="txtb">НАИМЕНОВАНИЕ1_3</font></td>
<td> ДАННЫЕ1_3</td>
</tr>
<tr class="bg2">
<td class="bg1" colSpan="2"><font class="txtb">НАЗВАНИЕ РАЗДЕЛА 2</font></td>
</tr>
<tr class="bg2">
<td><font class="txtb">НАИМЕНОВАНИЕ2_1</font></td>
<td> ДАННЫЕ2_1</td>
</tr>
<tr class="bg2">
<td><font class="txtb">НАИМЕНОВАНИЕ2_2</font></td>
<td> ДАННЫЕ2_2</td>
</tr>
<tr class="bg2">
<td><font class="txtb">НАИМЕНОВАНИЕ2_3</font></td>
<td> ДАННЫЕ2_3</td>
</tr>
<tr class="bg2">
<td><font class="txtb">НАИМЕНОВАНИЕ2_4</font></td>
<td> ДАННЫЕ2_3</td>
</tr>
<tr class="bg2">
<td class="bg1" colSpan="2"><font class="txtb">НАЗВАНИЕ РАЗДЕЛА 3</font></td>
</tr>
<tr class="bg2">
<td><font class="txtb">НАИМЕНОВАНИЕ3_1</font></td>
<td> ДАННЫЕ2_1</td>
</tr>
<tr class="bg2">
<td><font class="txtb">НАИМЕНОВАНИЕ3_2</font></td>
<td> ДАННЫЕ2_2</td>
</tr>
<tr class="bg2">
<td><font class="txtb">НАИМЕНОВАНИЕ3_3</font></td>
<td> ДАННЫЕ2_3</td>
</tr>
</tbody>
</table>
';
$pattern='#<td class="bg1" colSpan="2"><font class="txtb">(.*?)</font></td>#is';
$pattern2='#<td><font class="txtb">(.*?)</font></td>[\s]*'.
'<td>[\s]*(.*?)</td>#isu';
$flag=PREG_OFFSET_CAPTURE;
$offset=0;
preg_match_all($pattern, $text, $naidennoe, $flag, $offset);
preg_match_all($pattern2, $text, $naidennoe2, $flag, $offset);
echo '<p>Надо выдернуть и вывести данные в виде:</p>
НАЗВАНИЕ РАЗДЕЛА 1 <br />
НАИМЕНОВАНИЕ - ДАННЫЕ<br />
НАИМЕНОВАНИЕ - ДАННЫЕ<br />
НАИМЕНОВАНИЕ - ДАННЫЕ<br />
<br /><br />
НАЗВАНИЕ РАЗДЕЛА 2<br />
НАИМЕНОВАНИЕ - ДАННЫЕ<br />
НАИМЕНОВАНИЕ - ДАННЫЕ<br />
НАИМЕНОВАНИЕ - ДАННЫЕ<br />
<hr />';
echo $text;
/*
if (preg_match_all($pattern, $text, $naidennoe, $flag, $offset))
{
echo '<h2>Массив 1 (Массив заголовков)</h2>';
print_r($naidennoe);
}else
{
echo 'лажа какая-то получилась вместо массива1';
}
echo '<hr />';
if (preg_match_all($pattern2, $text, $naidennoe2, $flag, $offset))
{
echo '<h2>Массив 2 (Массив строк и ячеек из таблицы)</h2>';
print_r($naidennoe2);
}else
{
echo 'лажа какая-то получилась вместо массива2';
}
echo '<hr />';*/
echo '<hr /><pre>';
$poziciya=0;
for($i=0; $i<count($naidennoe[1]); $i++){
echo $naidennoe[1][$i][0] . '<br />';
if ($naidennoe[1][$i+1][1]){
for($j=$poziciya; $j<count($naidennoe2[1]); $j++){
if ($naidennoe[1][$i+1][1] > $naidennoe2[1][$j][1]){
echo $naidennoe[1][$i+1][1] . ' > ' . $naidennoe2[1][$j][1] . ' === ' . $naidennoe2[1][$j][0] . ' – ' . $naidennoe2[2][$j][0] . '<br />';
}else {
$poziciya=$j;
//echo '$poziciya=' . $poziciya . '<br />';
break;
}
}
}else {
//echo '$poziciya=' . $poziciya . '<br />';
for($j=$poziciya; $j<count($naidennoe2[1]); $j++){
echo $naidennoe2[1][$j][0] . ' – ' . $naidennoe2[2][$j][0] . '<br />';
}
}
}
echo '</pre>';
?>
результат работы, можно посмотреть здесь: http://php.mejstrok.ru/regylyarki.html | |
|
|
|
|
|
|
|
для: blg_step
(12.08.2014 в 12:55)
| | все трудится, спасибо | |
|
|
|