当用户发送消息时,我需要在消息中允许链接。我怎么能这样做?
@foreach($mess as $message)
<li data-mid="{{ $message->id }}">
<div class="row margin-left-none margin-right-none">
<div class="col-md-2 padding-right-none">
<div class="avatar-user text-center">
<img src="{{ $message->sender->avatar }}" alt="$message->sender->name">
</div>
</div>
<div class="col-md-10 padding-left-none">
<div class="user-name">
<span>{{ $message->sender->name }}
@if(Helper::getOnlineUser($message->sender->id))
<i data-toggle="tooltip" title="Онлайн" class="material-icons online">fiber_manual_record</i>
@else
<i data-toggle="tooltip" title="Оффлайн" class="material-icons offline">fiber_manual_record</i>
@endif
<span class="date float-right">{{ $message->created_at->formatLocalized('%H:%m') }}</span></span>
</div>
<div class="message">
{{ $message->body }}
</div>
</div>
</div>
</li>
@endforeach
这是消息的视图。
我如何允许链接?
示例:消息中的http://example.com =&gt;
<a href="http://example.com">http://example.com</a>
我需要{!! $ message-&gt; body !!}?或者如何?
在控制器中:
$mess = Chat::conversations($conversation)->for($user)->getMessages($limit, $request->page);
答案 0 :(得分:0)
您可以在刀片中使用以下php功能来实现,
<?php
function getDataWithURL($text){
// The Regular Expression filter
$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
// Check if there is a url in the text
if(preg_match($reg_exUrl, $text, $url)) {
// make the urls hyper links
echo preg_replace($reg_exUrl, "<a href=".$url[0].">".$url[0]."</a> ", $text);
} else {
// if no urls in the text just return the text
echo $text;
}
}
?>
您只需在刀片文件中添加此代码,然后就可以检查并替换文本中的链接,
<div class="message">
<?php getDataWithURL($message->body);?>
</div>
我希望你能理解。
答案 1 :(得分:0)
内置PHP函数来处理这个问题:
<div class="message">
{!! strip_tags($message->body, '<a>') !!}
</div>
第二个参数是您的白名单。
这具有以下优点:
{!!!!}