bbcode для таблиц

Wertos

Пьянь местная
Регистрация
13 Апр 2007
Сообщения
178
Реакции
39
Нужно вот такой код
Код:
[td col="1" row="2" bgcolor="#000" align="left" valign="top"]текст[/td]
заменять на такой
Код:
<td colspan="1" rowspan="2" bgcolor="#000" align="left" valign="top">текст</td>
По простому написать можно, но мне нужно проверять наличие допустим col или row и если они есть, добавлять их в замену, если нет то пропускать. И если параметров вообще нет, например
Код:
[td]текст[/td]
то менять просто на
Код:
<td>текст</td>
И ещё важна независимость от расположения, т.е. сначала col потом bgcolor и т.д.

Такое вообще возможно одной строкой ? А вообще буду рад любым решениям.
 
PHP:
str_replace(array('[', ']'), array('<', '>'), $str);
:crazy:
 
PHP:
preg_match("#(\[(\w+)\s+(.*?)\])(.*?)(\[/w+\])#", $input, $matches);
$tag = $matches[2];
$attrs = $matches[3];
$content = $matches[4];
$arr = explode(" ", $attrs);
$output = array();
foreach($item as $arr){
  $d = explode(" ", $item);
  if($d[0]== "col")
   $output[] = 'colspan="'.   $d[1] . '"';
  else if($d[0] == "row")
   $output[] = 'rowlspan="'.   $d[1] . '"';
  else
   $output[] = $item;
}

$res  = implode(" ", $output);
$res = "<$tag $res>$content</$tag>";
 
Хотя можно проще:
PHP:
$str = str_replace(array('[', ']'), array('<', '>'), $str);
$str = preg_replace("#\b(col|row)\b#", "$1span", $str);
 
Как вариант, но хотелось бы по другому... Дело в том, что уже много сообщений именно с col и row
Замени дополнительно str_replace(array('col', 'row'), array('colspan', 'rowspan'), $str);
 
Замени дополнительно str_replace(array('col', 'row'), array('colspan', 'rowspan'), $str);
Там же есть и другие ббкоды, которые в $str. И везде позаменяет [ на < хотя не везде нужно !
 
Для просмотра ссылки Войди или Зарегистрируйся так подойдет?

Для просмотра ссылки Войди или Зарегистрируйся или так
Почти, только тут зависит от местоположения, если поменять местами row и col то не работает, также если удалить, ведь юзер может написать и просто [td col="2"] и всё...
 
Такие задачи не решаются регулярными выражениями. Нет, конечно реально наворотить регулярку которая будет учитывать парметры тега в любой последовательности, но не дай бог вам нужно будет в этой регулярке что-то изменить или подправить. Проще всего регуляркой искать такие теги, а уже преобразовывать в правильный вариант с помощью ЯП.
 
Назад
Сверху