<?
$RE = <<< HEREDOC
^ # начало строки или текста
(?P<probel>
(?:
[ \\t] | # пробелы, табуляция или
\\\\ # обратный слэш, за ним
\\r? # возможно \r
\\n # и \n
)*+
)
[#]
(?P>probel) # хоть такая ссылка и называется рекурсивной, рекурсии фактически нет
define(?=[^a-z0-9_]|\$) # define справа от которого не символ или конец строки
# грамматика требует уточнения
(?:
\\\\[^\\r\\n] | # что-то экранированное, но не переводы строк, или
\\\\\\r?\\n | # экранированный перевод строки, или
[^\\r\\n] # любой символ кроме перевода строки
)*+
\$ # конец строки или текста
HEREDOC;
echo preg_replace("/$RE/xum", "<span style='color:white;background-color:blue'>\n$0\n</span>", $text);
?>
PD8KJHRleHQ9IGZpbGVfZ2V0X2NvbnRlbnRzKCJwaHA6Ly9zdGRpbiIpOwokUkUgPSA8PDwgSEVSRURPQwogICAgXiAjINC90LDRh9Cw0LvQviDRgdGC0YDQvtC60Lgg0LjQu9C4INGC0LXQutGB0YLQsAogICAgKD9QPHByb2JlbD4KICAgICAgICAoPzoKICAgICAgICAgICAgWyBcXHRdIHwgIyDQv9GA0L7QsdC10LvRiywg0YLQsNCx0YPQu9GP0YbQuNGPINC40LvQuAogICAgICAgICAgICBcXFxcICAgICAjINC+0LHRgNCw0YLQvdGL0Lkg0YHQu9GN0YgsINC30LAg0L3QuNC8CiAgICAgICAgICAgIFxccj8gICAgICMg0LLQvtC30LzQvtC20L3QviBccgogICAgICAgICAgICBcXG4gICAgICAjINC4IFxuCiAgICAgICAgKSorCiAgICApCiAgICBbI10KICAgICg/UD5wcm9iZWwpICMg0YXQvtGC0Ywg0YLQsNC60LDRjyDRgdGB0YvQu9C60LAg0Lgg0L3QsNC30YvQstCw0LXRgtGB0Y8g0YDQtdC60YPRgNGB0LjQstC90L7QuSwg0YDQtdC60YPRgNGB0LjQuCDRhNCw0LrRgtC40YfQtdGB0LrQuCDQvdC10YIKICAgIGRlZmluZSg/PVteYS16MC05X118XCQpICMgZGVmaW5lINGB0L/RgNCw0LLQsCDQvtGCINC60L7RgtC+0YDQvtCz0L4g0L3QtSDRgdC40LzQstC+0Lsg0LjQu9C4INC60L7QvdC10YYg0YHRgtGA0L7QutC4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjINCz0YDQsNC80LzQsNGC0LjQutCwINGC0YDQtdCx0YPQtdGCINGD0YLQvtGH0L3QtdC90LjRjwogICAgKD86CiAgICAgICAgXFxcXFteXFxyXFxuXSB8ICMg0YfRgtC+LdGC0L4g0Y3QutGA0LDQvdC40YDQvtCy0LDQvdC90L7QtSwg0L3QviDQvdC1INC/0LXRgNC10LLQvtC00Ysg0YHRgtGA0L7Quiwg0LjQu9C4CiAgICAgICAgXFxcXFxccj9cXG4gICB8ICMg0Y3QutGA0LDQvdC40YDQvtCy0LDQvdC90YvQuSDQv9C10YDQtdCy0L7QtCDRgdGC0YDQvtC60LgsINC40LvQuAogICAgICAgIFteXFxyXFxuXSAgICAgICAjINC70Y7QsdC+0Lkg0YHQuNC80LLQvtC7INC60YDQvtC80LUg0L/QtdGA0LXQstC+0LTQsCDRgdGC0YDQvtC60LgKICAgICkqKwogICAgXCQgIyDQutC+0L3QtdGGINGB0YLRgNC+0LrQuCDQuNC70Lgg0YLQtdC60YHRgtCwCiAgICAgICAgCkhFUkVET0M7CgplY2hvIHByZWdfcmVwbGFjZSgiLyRSRS94dW0iLCAiPHNwYW4gc3R5bGU9J2NvbG9yOndoaXRlO2JhY2tncm91bmQtY29sb3I6Ymx1ZSc+XG4kMFxuPC9zcGFuPiIsICR0ZXh0KTsKCj8+