mirror of
https://framagit.org/hubzilla/core.git
synced 2026-06-21 00:52:33 -04:00
Prevent mentions from mangling by markdown parser
Mentioning people whose handles include valid markdown would not survive
markdown to bbcode conversion wihout being mangled. An example that
brought this to my attention was a handle similar to this:
_someuser_@testsite.example
The underscores would be interpreted as emphasis in markdown, and
converted to:
[i]someuser[/i]@testsite.example
This patch should fix this, and hopefully any other issue with mentions
being mangled.
This commit is contained in:
@@ -64,6 +64,12 @@ function markdown_to_bb($s, $use_zrl = false, $options = []) {
|
||||
// Escaping the hash tags
|
||||
$s = preg_replace('/\#([^\s\#])/','#$1',$s);
|
||||
|
||||
// Protect mentions from being mangled by the markdown parser
|
||||
$s = preg_replace_callback(
|
||||
'|@\{([^}]+)\}|',
|
||||
fn ($matches) => '@{' . base64_encode($matches[1]) . '}',
|
||||
$s);
|
||||
|
||||
$s = MarkdownExtra::defaultTransform($s);
|
||||
|
||||
|
||||
@@ -76,6 +82,12 @@ function markdown_to_bb($s, $use_zrl = false, $options = []) {
|
||||
$s = str_replace("\r","",$s);
|
||||
}
|
||||
|
||||
// Restore mentions after markdown conversion
|
||||
$s = preg_replace_callback(
|
||||
'|@\{([^}]+)\}|',
|
||||
fn ($matches) => '@{' . base64_decode($matches[1]) . '}',
|
||||
$s);
|
||||
|
||||
$s = str_replace('#','#',$s);
|
||||
|
||||
$s = html2bbcode($s);
|
||||
|
||||
Reference in New Issue
Block a user