使用锚标记在Laravel刀片中输出URL

时间:2015-10-14 16:23:13

标签: php html laravel-5.1

在我的数据库中,用户输入的文本字符串可能包含某个网站的网址。现在我只是输出该网站,并且必须复制和粘贴网址。我试图替换该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>

(网站链接没有链接,只是一个字符串。)

想知道是否有人有任何解决方案。

1 个答案:

答案 0 :(得分:1)

  

默认情况下,会自动发送Blade {{}}语句   PHP的htmlentities可以防止XSS攻击。如果你不想要   要转义的数据,您可以使用以下语法:

     

你好,{!! $ name !!}。

http://laravel.com/docs/5.1/blade#displaying-data