【发布时间】:2025-12-06 10:05:01
【问题描述】:
你好,我有 laravel 刀片,这是有问题的部分
@php
$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
@endphp
<div class="message">
@php
$text = nl2br(e($message));
@endphp
@if(preg_match($reg_exUrl, $text, $url)){!! preg_replace($reg_exUrl, '<a href="$0" target="_blank">$0</a> ', $text) !!}
@else {!!$text!!}
@endif
</div>
如果链接仅在文本中,但如果它与一些单词和一些断行混合,这很好用 喜欢这条消息
亲爱的买家你好
链接运行良好https://google.com/blabla
还有一些随机文本
它转换成这个html代码
hello dear buyer<br>
<br>
the link is working good<br>
<a href="https://google.com/blabla<br" target="_blank">https://google.com/blabla<br< a=""> />
<br>
and some random text<br>
<br>
如何解决这个问题
如果用户输入消息包含行,我想将 url 替换为锚标记并显示断线
还可以在 Blade 中使用 e() 函数来防止任何 html 代码运行
请大家帮忙
【问题讨论】:
-
$message的内容是什么如果你想从你的 $message 中删除 html 标签,你可以这样做:$text = nl2br(e(strip_tags($message))); -
$message 的内容在问题“你好亲爱的买家....”中,我已经做了 nl2br 和 e() 函数我的问题是如何添加链接到带有 nl2br 的锚点
-
nl2br必须在正则表达式替换后运行,$text = nl2br(preg_replace($reg_exUrl, '<a href="$0" target="_blank">$0</a> ', $message));,参见3v4l.org/qKkpR
标签: javascript php html regex laravel