mirror of
https://github.com/friendica/friendica
synced 2025-04-26 15:50:10 +00:00
Merge pull request #7474 from MrPetovan/bug/7457-html-bbcode-plaintext
Fix HTML/BBCode::toPlaintext
This commit is contained in:
commit
a507963c7f
8 changed files with 131 additions and 63 deletions
|
@ -357,10 +357,7 @@ class BBCode extends BaseObject
|
|||
*/
|
||||
public static function toPlaintext($text, $keep_urls = true)
|
||||
{
|
||||
$naked_text = preg_replace('/\[.+?\]/','', $text);
|
||||
if (!$keep_urls) {
|
||||
$naked_text = preg_replace('#https?\://[^\s<]+[^\s\.\)]#i', '', $naked_text);
|
||||
}
|
||||
$naked_text = HTML::toPlaintext(BBCode::convert($text, false, 0, true), 0, !$keep_urls);
|
||||
|
||||
return $naked_text;
|
||||
}
|
||||
|
|
|
@ -56,6 +56,7 @@ class HTML
|
|||
|
||||
$xpath = new DOMXPath($doc);
|
||||
|
||||
/** @var \DOMNode[] $list */
|
||||
$list = $xpath->query("//" . $tag);
|
||||
foreach ($list as $node) {
|
||||
$attr = [];
|
||||
|
@ -98,9 +99,12 @@ class HTML
|
|||
$node->parentNode->insertBefore($StartCode, $node);
|
||||
|
||||
if ($node->hasChildNodes()) {
|
||||
/** @var \DOMNode $child */
|
||||
foreach ($node->childNodes as $child) {
|
||||
$newNode = $child->cloneNode(true);
|
||||
$node->parentNode->insertBefore($newNode, $node);
|
||||
if (trim($child->nodeValue)) {
|
||||
$newNode = $child->cloneNode(true);
|
||||
$node->parentNode->insertBefore($newNode, $node);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -560,6 +564,8 @@ class HTML
|
|||
$ignore = false;
|
||||
}
|
||||
|
||||
$ignore = $ignore || strpos($treffer[1], '#') === 0;
|
||||
|
||||
if (!$ignore) {
|
||||
$urls[$treffer[1]] = $treffer[1];
|
||||
}
|
||||
|
@ -583,7 +589,7 @@ class HTML
|
|||
|
||||
$message = mb_convert_encoding($message, 'HTML-ENTITIES', "UTF-8");
|
||||
|
||||
@$doc->loadHTML($message);
|
||||
@$doc->loadHTML($message, LIBXML_HTML_NODEFDTD | LIBXML_NOBLANKS);
|
||||
|
||||
$message = $doc->saveHTML();
|
||||
// Remove eventual UTF-8 BOM
|
||||
|
@ -592,7 +598,7 @@ class HTML
|
|||
// Collecting all links
|
||||
$urls = self::collectURLs($message);
|
||||
|
||||
@$doc->loadHTML($message);
|
||||
@$doc->loadHTML($message, LIBXML_HTML_NODEFDTD | LIBXML_NOBLANKS);
|
||||
|
||||
self::tagToBBCode($doc, 'html', [], '', '');
|
||||
self::tagToBBCode($doc, 'body', [], '', '');
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue