Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Замена таблиц
 
 автор: max90   (25.05.2013 в 21:41)   письмо автору
 
 

Здравствуйте. Имеется такой код.
<?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>

в чем моя ошибка?

  Ответить  
 
 автор: confirm   (25.05.2013 в 22:00)   письмо автору
 
   для: max90   (25.05.2013 в 21:41)
 

Таблицы какие-то особенной структуры, что нельзя стилями, без такого насилия? Что делают стили ваши?

  Ответить  
 
 автор: max90   (25.05.2013 в 22:16)   письмо автору
 
   для: confirm   (25.05.2013 в 22:00)
 

Это насилие применяется единожды к статье (да и то в локалке) :)) Статья в бд обновляется и все.

  Ответить  
 
 автор: confirm   (25.05.2013 в 22:26)   письмо автору
 
   для: max90   (25.05.2013 в 22:16)
 

Да причем тут обновление, что вы хотите стилями сделать, как разукрасить? Зачем все это делать, если можно описать CSS?

  Ответить  
 
 автор: max90   (25.05.2013 в 22:53)   письмо автору
 
   для: 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>

  Ответить  
 
 автор: DangerBay   (26.05.2013 в 04:29)   письмо автору
 
   для: max90   (25.05.2013 в 22:53)
 

Во-первых, хранить html-тэги в БД - неправильно.
В базе нужно хранить бб-коды и преобразовывать в html на выводе.

Во-вторых, ваша регулярка работает правильно, а вот ошибка в выводе.
Склейка строк $bodytr.=
Что делаете, то и получаете.

  Ответить  
 
 автор: confirm   (26.05.2013 в 08:41)   письмо автору
 
   для: 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...

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования