|
|
|
| Здравствуйте. Имеется такой код.
<?php if(strpos($allcontent,"</table>")!=false){
preg_match_all("#<table.*</table>#sUi", $allcontent, $table);
foreach($table[0] as $table) {
preg_match_all("#<tr.*</tr>#sUi", $table, $tr);
foreach($tr[0] as $index => $val) {
if($index == 0){$bodytr.=str_replace("<td>", "<td class=\"hd\">", $tr[0][$index]);}
if(chet($index)==false AND $index != 0){ $bodytr.=str_replace("<td>", "<td class=\"alt\">", $tr[0][$index]);}
if(chet($index)==true AND $index != 0){ $bodytr.=str_replace("<td>", "<td>", $tr[0][$index]);}
}
$allcontent=str_replace($table, "<table class=\"Zebra-2\" style=\"width: 100%;\"><tbody>".$bodytr."</tbody></table>", $allcontent);
}
}
var_dump($allcontent);
?>
| функция кода такова: из бд берется контент, проверяется на наличие таблиц и если таблицы имеются, применяются классы к строкам. Проблема заключается в следующем: Если в статье больше одной таблицы, к каждой таблице появляется содержимое предыдущей таблицы.
Примерно так. Имеем на входе
<table><tr><td>таблица 1</td></tr></table>
<table><tr><td>таблица 2</td></tr></table>
|
получаем на выходе
<table><tr><td class="hd">таблица 1</td></tr></table>
<table><tr><td class="hd">таблица 1</td></tr><tr><td class="hd">таблица 2</td></tr></table>
|
в чем моя ошибка? | |
|
|
|
|
|
|
|
для: max90
(25.05.2013 в 21:41)
| | Таблицы какие-то особенной структуры, что нельзя стилями, без такого насилия? Что делают стили ваши? | |
|
|
|
|
|
|
|
для: confirm
(25.05.2013 в 22:00)
| | Это насилие применяется единожды к статье (да и то в локалке) :)) Статья в бд обновляется и все. | |
|
|
|
|
|
|
|
для: max90
(25.05.2013 в 22:16)
| | Да причем тут обновление, что вы хотите стилями сделать, как разукрасить? Зачем все это делать, если можно описать CSS? | |
|
|
|
|
|
|
|
для: confirm
(25.05.2013 в 22:26)
| | в css уже есть описание
table.Zebra-2 {width:80%;border-collapse:collapse;margin-bottom:15px;border:#eee 0px solid; font-size: 12px !important;}
table.Zebra-2 td {padding:7px;background:#eee;line-height:10pt;font-size: 12px !important;}
table.Zebra-2 td.alt {padding:7px;background:none;font-size: 12px !important;}
table.Zebra-2 td.hd
{
background-image: -moz-linear-gradient(top, #555555, #111111);
background-image: -webkit-gradient(linear, center top, center bottom, from(#555555), to(#111111));
background-image: -o-linear-gradient(top, #555555, #111111);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#111111');
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#111111')";
background-image: linear-gradient(top, #555555, #111111);
border-bottom:#fff 0px solid;color:#fff;padding:7px;
}
table.Zebra-2 td.fc {padding:7px;background:#eee;font-size: 12px !important;}
table.Zebra-2 td.fcalt {padding:7px;background:none;font-size: 12px !important;}
|
Нужно применить его к таблицам к контенту из определенной категории
ЗЫ. В первом сообщении ошибка. На выходе получаю
<table class="Zebra-2" style="width: 100%;"><tr><td class="hd">таблица 1</td></tr></table>
<table class="Zebra-2" style="width: 100%;"><tr><td class="hd">таблица 1</td></tr><tr><td class="hd">таблица 2</td></tr></table>
|
| |
|
|
|
|
|
|
|
для: max90
(25.05.2013 в 22:53)
| | Во-первых, хранить html-тэги в БД - неправильно.
В базе нужно хранить бб-коды и преобразовывать в html на выводе.
Во-вторых, ваша регулярка работает правильно, а вот ошибка в выводе.
Склейка строк $bodytr.=
Что делаете, то и получаете. | |
|
|
|
|
|
|
|
для: max90
(25.05.2013 в 22:53)
| |
tr:nth-child(odd) td {
background:#eee;
}
tr:first-child td { background:#777;}
| И нефиг заниматься ерундой, тем более, если локально и браузером не лимитировано. Пишите #eee, #fff, и в тоже время почему-то пишите #555555, а не #555, #111111, а не #111... | |
|
|
|