Allow semicolons in links [wip?]

Resolves #359
This commit is contained in:
celestora 2022-01-16 13:15:08 +02:00 committed by GitHub
parent 217463e554
commit cfb8b68fc0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -32,10 +32,12 @@ trait TRichText
private function formatLinks(string &$text): string private function formatLinks(string &$text): string
{ {
return preg_replace_callback( return preg_replace_callback(
"%(([A-z]++):\/\/(\S*?\.\S*?))([\s)\[\]{},;\"\'<]|\.\s|$)%", "%(([A-z]++):\/\/(\S*?\.\S*?))([\s)\[\]{},\"\'<]|\.\s|$)%",
(function (array $matches): string { (function (array $matches): string {
$href = str_replace("#", "&num;", $matches[1]); $href = str_replace("#", "&num;", $matches[1]);
$href = str_replace(";", "&#59;", $matches[1]);
$link = str_replace("#", "&num;", $matches[3]); $link = str_replace("#", "&num;", $matches[3]);
$link = str_replace(";", "&#59;", $matches[3]);
$rel = $this->isAd() ? "sponsored" : "ugc"; $rel = $this->isAd() ? "sponsored" : "ugc";
return "<a href='$href' rel='$rel' target='_blank'>$link</a>" . htmlentities($matches[4]); return "<a href='$href' rel='$rel' target='_blank'>$link</a>" . htmlentities($matches[4]);