За последние 24 часа нас посетили 20407 программистов и 1092 робота. Сейчас ищут 849 программистов ...

Добавьте тег <p>, за исключением тега <pre>

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

  1. Roman680

    Roman680 Активный пользователь

    С нами с:
    21 окт 2017
    Сообщения:
    4
    Симпатии:
    0
    Здравствуйте, как добавить тег P ко всем строкам в тексте, кроме тега pre code?

    PHP:
    1. $text = BBCodeToHTML("some text
    2. some text
    3. [code]test
    4. test
    5. test
    6. asf
    7. test[/code]");
    Результат:

    PHP:
    1. function BBCodeToHTML($var) {
    2. $search = array(
    3.                 '/\[code\](.*)\[\/code\]/is',
    4.                 '/\[b\](.*?)\[\/b\]/is',
    5.                 '/\[i\](.*?)\[\/i\]/is',
    6.                 '/\[u\](.*?)\[\/u\]/is',
    7.                 '#^\s*(.+)#m'
    8. );
    9.  
    10. $replace = array(
    11.                 '<pre><code>$1</code></pre>',
    12.                 '<strong>$1</strong>',
    13.                 '<em>$1</em>',
    14.                 '<u>$1</u>',
    15.                 '<p>$1</p>'
    16. );
    17.  
    18. $var = preg_replace ($search, $replace, $var);
    19. return $var;}
    20.  
    21. echo "Результат: <p>text</p><p>text2</p><p><pre><code>test</p><p>test</p><p>test</p><p>asf</p><p>test</code></pre></p>";
    Как сделать исключение для тега <pre>

    HTML:
    1. Требуется: <p>text</p><p>text2</p><p><pre><code>test
    2. test
    3. test
    4. asf
    5. test</code></pre></p>

    Спасибо,
     
  2. Emilien

    Emilien Активный пользователь

    С нами с:
    30 июн 2016
    Сообщения:
    246
    Симпатии:
    156
    Заменить на
    PHP:
    1. '#(?|\s*(<pre>[\s\S]*?</pre>)|^\s*(.+))#m'
     
    Roman680 нравится это.
  3. Roman680

    Roman680 Активный пользователь

    С нами с:
    21 окт 2017
    Сообщения:
    4
    Симпатии:
    0
    Спасибо.