elements to tables $blockquoteTemplate = '
$1 |
(.*?)<\/blockquote>/s', $blockquoteTemplate, $element['text']); // add line breaks after tags $element['text'] = preg_replace('/(<\/(ul|ol|h\d)>)/', '$1
', $element['text']); $element['text'] = self::removeEmptyHTMLTags($element['text']); // convert emptytags to line breaks $element['text'] = preg_replace('/
<\/p>/', '
', $element['text']); // convertto $element['text'] = preg_replace('/
(.*?)<\/p>/', '
', $element['text']); $element['text'] = preg_replace('/
$1 (.*?)<\/p>/', '
', $element['text']); // remove the last break line $element['text'] = preg_replace('/
$2
([^
]*)$/s', '', $element['text']); $template = ''; return $template; } static function removeEmptyHTMLTags($html) { $pattern = <<<'EOD' ~ < (?: !--[^-]*(?:-(?!->)[^-]*)*-->[^<]*(*SKIP)(*F) # skip comments | ( # group 1 (span|em|strong) # tag name in group 2 [^"'>]* #'"# all that is not a quote or a closing angle bracket (?: # quoted attributes "[^\\"]*(?:\\.[^\\"]*)*+" [^"'>]* #'"# double quote | '[^\\']*(?:\\.[^\\']*)*+' [^"'>]* #'"# single quote )*+ > \s* (?: \s* # html comments | <(?1) \s* # recursion with the group 1 )*+ \2> # closing tag ) # end of the group 1 ) ~sxi EOD; return preg_replace($pattern, '', $html); } } ' . $element['text'] . '