Разделить ссылку от запятой пробелом

Есть сайт на WordPress. Есть кастомная форма комментариев. При написании комментария, если пользователь сразу после ссылки поставит любой знак препинания (, или . или ! и тд.), то при публикации знак препинания станет частью ссылки, и естественно ссылка будет не рабочей. Можно ли как-то устранить проблему? Приведу часть кода:

<div class="comment">
<?php
    if (!empty($comment_html)) {
        $m = '|([\w\d]*)\s?(https?://([\d\w\.-]+\.[\w\.]{2,6})[^\s\]\[\<\>]*/?)|i';
        $r = '<noindex><a href="$0" target="_blank" rel="nofollow">$0</a></noindex>';

        $comment_html = preg_replace($m, $r, $comment_html);
    }
    if (empty($comment_html)) {
        $m = '|([\w\d]*)\s?(https?://([\d\w\.-]+\.[\w\.]{2,6})[^\s\]\[\<\>]*/?)|i';
        $r = '<noindex><a href="$0" target="_blank" rel="nofollow">$0</a></noindex>';

        $comment_html = preg_replace($m, $r, $comment->comment_content);
    }
    if ($comment_html == "Комментарий удален.") {
        echo '<span>' . $comment_html . '</span>';
    } else {
        echo $comment_html;
        
    }
?>
</div>

Ответы (1 шт):

Автор решения: HMRDevil

Подправьте регулярное выражение. Замените строку

$m = '|([\w\d]*)\s?(https?://([\d\w\.-]+\.[\w\.]{2,6})[^\s\]\[\<\>]*/?)|i';

на

$m = '|(https?://([\d\w\.-]+\.[\w\.]{2,6})[^\s\W\D]*/?)|i';
→ Ссылка