在我的数据库中,用户输入的文本字符串可能包含某个网站的网址。现在我只是输出该网站,并且必须复制和粘贴网址。我试图替换该URL(如果有的话)并将其转换为html锚标记(如果有的话)。
到目前为止,我遍历每条记录并在那里有一个网址时替换该文本。 (我还想保留他们在该网址周围输入的任何文字。)这是我用于此的功能:
foreach ($applications as $a) {
$web = $a->websites;
$web = preg_replace('~(\s|^)(https?://.+?)(\s|$)~im', '$1<a href="$2" target="_blank">$2</a>$3', $web);
$web = preg_replace('~(\s|^)(www\..+?)(\s|$)~im', '$1<a href="http://$2" target="_blank">$2</a>$3', $web);
$a->websites = nl2br($web);
}
如果我在Controller中回显并死掉,它会正确输出带有锚标记的文本和网址。但是在我的刀片输出中,我这样做:
@foreach ($applications as $application)
<tr>
<td>{{{ $application->websites or '' }}}</td>
</td>
</tr>
@endforeach
这样输出如下:
<a href="http://ChangeThisToYourSite.com" target="_blank">http://ChangeThisToYourSite.com</a>
(网站链接没有链接,只是一个字符串。)
想知道是否有人有任何解决方案。
答案 0 :(得分:1)
默认情况下,会自动发送Blade {{}}语句 PHP的htmlentities可以防止XSS攻击。如果你不想要 要转义的数据,您可以使用以下语法:
你好,{!! $ name !!}。