Регулярное выражение php

304
05 января 2017, 08:18

Есть функция

    function showBBcodes($text) {
  // BBcode array
  $find = array(
    '~\[b\](.*?)\[/b\]~s',
    '~\[i\](.*?)\[/i\]~s',
    '~\[u\](.*?)\[/u\]~s',
    '~\[quote\](.*?)\[/quote\]~s',
    '~\[size(.*?)\=(.*?)\](.*?)\[/size\]~s',
    '~\[color(.*?)\=(.*?)\](.*?)\[/color\]~s',
    '~\[url\]((?:ftp|https?)://.*?)\[/url\]~s',
    '~\[img\](https?://.*?\.(?:jpg|jpeg|gif|png|bmp))\[/img\]~s',
    '~\[b_id\](.*?)\[/b_id\]~s',
    '~\[tex\](.*?)\[/tex\]~s',
    '~\[sup\](.*?)\[/sup\]~s'
  );
  // HTML tags to replace BBcode
  $replace = array(
    '<span stype="font-weight: bold;">  $1</span>',
    '<i>$1</i>',
    '<span style="text-decoration:underline;">$1</span>',
    '<pre>$1</'.'pre>',
    '<span style="font-size:$2px;">$3</span>',
    '<span style="color:$2;">$3</span>',
    '<a class="blue-font" href="$1">$1</a>',
    '<a class="blue-font" href="$1"><img src="$1" alt=""></a>',
    '<sub>$1</sub>',
    '<a class="blue-font" href="http://jabber.pozitiv-r.ru/cgi-bin/mathtex.cgi?$1"><img src="http://jabber.pozitiv-r.ru/cgi-bin/mathtex.cgi?$1" alt=""></a>',
    '<sup>$1</sup>'
  );
  // Replacing the BBcodes with corresponding HTML tags
  return preg_replace($find,$replace,$text);
} 

Требуется в теге [tex] убрать </br>, просто strip_tags не годится, ибо не нужно обрезать их во всем результате(поедет весь текст). Пробовал переделывать регулярку,но не получалось. Прошу помощи

Answer 1

Можно сделать с помощью preg_replace_callback, если в будущем нужно будет делать преобразования над другими вхождениями. Если нет, то можно просто preg_match_all, обработка результата str_replace (замена <br/> на ""), и затем замена в исходной строке опять же str_replace.

READ ALSO
Правильный роутер

Правильный роутер

1) Как правильно перенаправить все запросы на роутер, но тем не менее исключить перенаправление для стилей, js-скриптов, картинок, музыки, видео...

298
Зачем использовать метод on() при назначении событий в джейквери?

Зачем использовать метод on() при назначении событий в джейквери?

Какие преимущества дает назначение событий через универсальный метод on() перед назначением событий, например, методами click(), hover(), keydown()?

369
Ошибка : illegal break statement

Ошибка : illegal break statement

Вот так должно работать

402