Xpoint
   [напомнить пароль]

Regexp для превращения в таблицу

Метки: [без меток]
2013-05-17 22:48:04 [обр] Александр Петров(2/4)[досье]
|column1 |column2|
|value1 |value2|
<table>
<tr>
   <td>column1</td>
   <td>column1</td>
</tr>
<tr>
   <td>value1</td>
   <td>value2</td>
</tr>
</table>
Кто в силах составить?
спустя 3 часа 4 минуты [обр] Василий Свиридов(53/175)[досье]
А почему именно regexp? За один проход слишком сложный регекс, а если самомоу в цикле крутить - то explode хватит, IMHO.
спустя 2 часа 6 минут [обр] Jared(3/26)[досье]
Вам обязательно один сложный регэксп? Логичнее использовать три простых. А вообще лучше обойтись без них, использовать strpos и substring. Или, для пущего облегчения кода explode, как предложил Василий Свиридов[досье].
спустя 16 часов [обр] Александр Петров(2/4)[досье]
Вам обязательно один сложный регэксп? Логичнее использовать три простых.

Можно три простых. Можете подсказать выражения. Regexp со мной не дружит.

А вообще лучше обойтись без них

Все остальное с regexp. Что бы единообразно было!

function formatting_text($text)
{
 $ret = ' ' . $text;
 // [b] & [/b] для жирного текста
 $ret = preg_replace("#\[b\](.*?)\[/b\]#si", "<b>\\1</b>", $ret);
 // [i] & [/i] для наклонного текста
 $ret = preg_replace("#\[i\](.*?)\[/i\]#si", "<i>\\1</i>", $ret);
 // [u] & [/u] для подчёркнутого текста
 $ret = preg_replace("#\[u\](.*?)\[/u\]#si", "<u>\\1</u>", $ret);
 // [color=color_selected] и [/color] для выбора цвета
 $ret = preg_replace("#\[color=(\#[0-9A-F]{6}|[a-z\-]+)\](.*?)\[/color\]#si", "<font color=\"\\1\">\\2</font>", $ret);

 $ret = preg_replace("#\[список\](.*?)\[/список\]#si", "<ul>\\1</ul>", $ret);
 $ret = preg_replace('/\[\*\](.*?)\n(?=\[|<)/', "<li>\\1</li>", $ret);
 $ret = substr($ret, 1);
 return $ret;
}


$bbcode = 'Этот [color=red]текс[/color] [i]размечен[/i] при помощи [b]bbcode[/b]'."\n";
$bbcode .= '|column1 |column2| ';
$bbcode .= '|value1 |value1| ';
$bbcode .= '[список]';
$bbcode .= '[*]первый пункт'."\n";
$bbcode .= '[*]первый пункт'."\n";
$bbcode .= '[*]первый пункт'."\n";
$bbcode .= '[/список]';
echo formatting_text($bbcode);
спустя 2 дня 13 часов [обр] Александр Петров(2/4)[досье]
Использую язык Creole и парсер для php
спустя 15 часов [обр] Василий Свиридов(53/175)[досье]
А не проще тогда поставить BBCode из PECL и не мучиться? http://php.net/manual/ru/book.bbcode.php
Этот модуль позволяет упростить разбор текста с BBCode для преобразования его в HTML или другой язык разметки. Он использует однопроходную обработку и значительно превосходит по скорости вариант, основанный на использовании регулярных выражений. Кроме того, он позволяет получить корректный HTML за счет переупорядочивания открывающих / закрывающих тегов и автоматического закрытия незакрытых тегов.
спустя 5 часов [обр] Александр Петров(2/4)[досье]

Спасибо за кругозор. Не видел эту возможность когда искал именно BB parser. Сейчас, ИМХО, creole удобнее. Пример

* 1
** 1.1.

против

[list]
 [*] 1
   [list]
     [*] 1.1.
   [/list]
[/list]

Контент менеджеру разметка яснее и понятнее.

спустя 14 часов [обр] Василий Свиридов(53/175)[досье]
Может вам тогда еще глянуть на Markdown? Он, как бы, де-факто стандарт во многих местах. Даже есть спец. редакторы и плагины под него...
спустя 31 минуту [обр] Александр Петров(2/4)[досье]
[[url=http://ru.wikipedia.org/wiki/Markdown Распространенный]]. Спасибо. В закладки.
Powered by POEM™ Engine Copyright © 2002-2005