我想让文本输出中的 URL 可点击,而不必转义整个输出。首先我想这样做,但我必须逃避所有输出,这是一个安全风险。function formatContent($content) { $url_filter_protocol = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/"; $url_filter_www = "/(www)\.[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/"; if (preg_match($url_filter_protocol, $content, $url)) { return preg_replace($url_filter_protocol, "<a href='$url[0]' target='_blank'>$url[0]</a> ", $content); } elseif (preg_match($url_filter_www, $content, $url)) { return preg_replace($url_filter_www, "<a href='https://$url[0]' target='_blank'>$url[0]</a> ", $content); } else { return $content; } }{!! nl2br(formatContent($post->content)) !!}有谁知道,我如何转换字符串中的 URL而不必转义到整个输出?
1 回答
慕运维8079593
TA贡献1876条经验 获得超5个赞
一种方法是将原始字符串拆分为多个部分,记住哪些部分是链接,然后分别打印这些部分,在您的视图中构建链接。
我不会把所有的东西都写出来,但在你看来应该是这样的:
@foreach($postArray as $postItem)
@if($postItem['type'] == 'link') <a href="{{$postItem['content']}}">{{$postItem['content']}}</a>
@else {{$postItem['content']}}
@endif
@endforeach
另一种方法是使用 javascript/jQuery 查找链接并在之后转换它们,但我不知道这是否是您认为的一个选项。
- 1 回答
- 0 关注
- 151 浏览
添加回答
举报
0/150
提交
取消