За последние 24 часа нас посетили 16252 программиста и 1579 роботов. Сейчас ищут 1607 программистов ...

Регулярные выражения для preg_replace

Тема в разделе "Регулярные выражения", создана пользователем phpfan, 30 янв 2015.

  1. phpfan

    phpfan Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    13
    Симпатии:
    0
    Адрес:
    Луганск
    Нужна помощь в регулярном выражении для preg_replace
    У меня задача делаю создание html таблиц через BB коды
    BB код выглядит вот так

    Код (Text):
    1.  [TABLE]
    2. [TR]
    3. [TH] Введите текст...
    4. [TH] Введите текст...
    5. [TH] Введите текст...
    6. [TH] Введите текст...
    7. [TH] Введите текст...
    8. [/TR]
    9. [TR]
    10. [TD] Введите текст...
    11. [TD] Введите текст...
    12. [TD] Введите текст...
    13. [TD] Введите текст...
    14. [TD] Введите текст...
    15. [/TR]
    16. [/TABLE]
    Для такого кода делаю парсер php массив
    Код (Text):
    1. $in = array(
    2.     '/\[TD\]\s?(.*?)\n/ms',
    3.     '/\[TH\]\s?(.*?)\n/ms',
    4.     '/\[TR\]\s?(.*?)\n/ms',
    5.     '/\[\/TR\]\s?(.*?)\n/ms',
    6.     '/\[TABLE\](.*?)\[\/TABLE\]/ms'
    7. );

    Преобразуем вот так массив
    Код (Text):
    1. $out = array(
    2.  '<td>\1</td>',
    3.  '<th>\1</th>',
    4.  '<tr>\\1',
    5.  '</tr>',
    6.  '<table><tbody>\1</tbody></table>'
    7. );
    В результате обрабатывается так
    Код (Text):
    1.  $text = preg_replace($in, $out, $text);
    В результаете обработки получается, что перед таблицей идут несколько строк с переносами
    Код (Text):
    1. <br></br>
    2. <br></br>
    3. <br></br>
    4. <br></br>
    5. <br></br>
    6. <table></table>
    Таблица работает все нгормально а вот как избавиться от переносов никак не осилю.
    Может кто сталкивался с подобным. Вродебы понятно объяснил надеюсь?

    Javscript для создания бб кода
    Код (Text):
    1. placeholder:"Введите текст...",
    2.             replaceWith:function(h) {
    3.                 var cols = prompt("Количество столбцов?"),
    4.                     rows = prompt("Количество строк?"),
    5.                     html = "[TABLE]\n";
    6.                 if (h.altKey) {
    7.                     for (var c = 0; c < cols; c++) {
    8.                         html += "! [![TH"+(c+1)+" text:]!]\n"; 
    9.                     }  
    10.                 }
    11.                 for (var r = 0; r < rows; r++) {
    12.                     html+= "[TR]\n";
    13.                     for (var c = 0; c < cols; c++) {
    14.                         html += "[TD] "+(h.placeholder||"")+"[/TD]\n"; 
    15.                     }
    16.                     html+= "[/TR]\n";
    17.                 }
    18.                 html += "[/TABLE]\n";
    19.                 return html;
    20.             }
    Формирует структуру то нормально но вот не убирает все переносы \n
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.099
    Симпатии:
    1.243
    Адрес:
    там-сям
    А должен?
     
  3. phpfan

    phpfan Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    13
    Симпатии:
    0
    Адрес:
    Луганск
    Как убрать br регуляркой?
    Вродебы написал же!
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.099
    Симпатии:
    1.243
    Адрес:
    там-сям
    спокойно! не всё всем так очевидно как тебе. а главное, никому кроме тебя не хочется напрягаться.
    вместо того чтобы убирать мусор, надо постараться не сорить — золотое правило.
    разберись откуда берутся эти твои br.
     
  5. phpfan

    phpfan Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    13
    Симпатии:
    0
    Адрес:
    Луганск
    Беруться то понятно в java скрипте при формировании, но как их убрать регуляркой.
    После закрытого тега к примеру <tr> остается символ переноса \n и он отображается вверху таблицы после обработки <br></br>
    Но если перенос в java не ставить тогда вилезет куча не понятно что куда писать все будет слитно и не понятно.
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    а при чём тут java? Убери заменой вместо регулярки.
     
  7. phpfan

    phpfan Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    13
    Симпатии:
    0
    Адрес:
    Луганск
    Тогда ломает все переносы на странице
    Необходимо именно после закрытого тега убрать перенос
    Уже 2 дня играюсь и ничего не получилось, перепробовал все что мог
     
  8. rognorog

    rognorog Новичок

    С нами с:
    7 июл 2014
    Сообщения:
    330
    Симпатии:
    0
    не одного trim не увидел)