diff --git a/chat.php b/chat.php
index f3a2e3a..2f874a2 100644
--- a/chat.php
+++ b/chat.php
@@ -3032,7 +3032,7 @@ function apply_filter(string $message, int $poststatus, string $nickname) : stri
function apply_linkfilter(string $message) : string {
$filters=get_linkfilters();
foreach($filters as $filter){
- $message=preg_replace_callback("/(.*?(?=<\/a>))<\/a>/iu",
+ $message=preg_replace_callback("/([^<]*)<\/a>/iu",
function ($matched) use(&$filter){
return "".preg_replace("/$filter[match]/iu", $filter['replace'], $matched[2]).'';
}
@@ -3040,7 +3040,7 @@ function apply_linkfilter(string $message) : string {
}
$redirect=get_setting('redirect');
if(get_setting('imgembed')){
- $message=preg_replace_callback('/\[img]\s?(.*?(?=<\/a>))<\/a>/iu',
+ $message=preg_replace_callback('/\[img]\s?([^<]*)<\/a>/iu',
function ($matched){
return str_ireplace('[/img]', '', "

");
}
@@ -3050,15 +3050,15 @@ function apply_linkfilter(string $message) : string {
$redirect="$_SERVER[SCRIPT_NAME]?action=redirect&url=";
}
if(get_setting('forceredirect')){
- $message=preg_replace_callback('/(.*?(?=<\/a>))<\/a>/u',
+ $message=preg_replace_callback('/([^<]*)<\/a>/u',
function ($matched) use($redirect){
return "$matched[2]";
}
, $message);
- }elseif(preg_match_all('/(.*?(?=<\/a>))<\/a>/u', $message, $matches)){
+ }elseif(preg_match_all('/([^<]*)<\/a>/u', $message, $matches)){
foreach($matches[1] as $match){
if(!preg_match('~^http(s)?://~u', $match)){
- $message=preg_replace_callback('/(.*?(?=<\/a>))<\/a>/u',
+ $message=preg_replace_callback('/([^<]*)<\/a>/u',
function ($matched) use($redirect){
return "$matched[2]";
}