XHP с регулярным выражением для замены ссылки

Я пытаюсь реализовать простую функцию, которая при вводе текста возвращает текст, измененный с xhp_a при обнаружении ссылки в абзаце xhp_p,

Рассмотрим этот класс

class Urlifier {

protected static $reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";


public static function convertParagraphWithLink(?string $input):xhp_p{
if (!$input)
return <p></p>;
else
{
if (preg_match(self::$reg_exUrl,$input,$url_match)) //match found
{
return <p>{preg_replace($reg_exUrl, '<a href="'.$url_match[0].'>'.$url_match[0].'</a>', $input)}<p>;
}else{//no link inside
<p>{$input}</p>
}
}
}

Проблема здесь в том, что xhp ускользает html и ссылки не отображаются, как ожидалось. Я полагаю, что это происходит потому, что не создают иерархию DOM, как ожидалось (с appendChild метод например) и таким образом все regex заменяет это строка.

Поэтому мой другой подход к этой проблеме заключался в использовании preg_match_callback с функцией обратного вызова, которая создаст xhp_a и добавить в иерархию под xhp_p но это тоже не сработало.

Я где то не прав? Если бы не было какого-либо риска безопасности / больших накладных расходов, просто найти и заменить при загрузке HTML на стороне клиента, а не на сервере?

Спасибо за ваше время !

3

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]