Laravel 5.2搜索结果如何高亮显示?

How to make Highlight for search results by Laravel 5.2?

可见:

@if($posts)
            @foreach($posts as$post)
                <h2>
                    <a href="{{route('home.post',$post->id)}}">{{$post->title}}</a>
                </h2>
                <p class="lead">
                    by <a href="index.php">{{$post->user->name}}</a>
                </p>
                <p><span class="glyphicon glyphicon-time"></span> Posted {{$post->created_at->diffForHumans()}}</p>
                <hr>
                <img class="img-responsive" src="{{$post->photo->file}}" alt="">
                <hr>
                {!! str_limit($post->body,35 )!!}
                <a class="btn btn-primary" href="{{route('home.post',$post->id)}}">Read More <span class="glyphicon glyphicon-chevron-right"></span></a>
                <hr>
            @endforeach
        @endif

在控制器中:

public function searchmulti(){
        $keyword=Input::get('title');
        $posts = Post::where('title', 'like', "%$keyword%")->get();
        return view('Admin.comments.postsauthor',compact('posts'));
       }

////////////////////////////////////////// //////////////////////////////////////////////// //////////////////////////////////////////////// //////////////////////////////////////////////// /////////////////////////////////////////////////

使用toArray()方法(see here)将搜索结果转换为数组,然后 遍历结果并使用 str_replace 将搜索到的词替换为 <span class="highlight">your word</span>

在此之后,您将得到 $post['title'](而不是 $post->title),其中突出显示的跨度在

当然,您必须在 css

中添加带有一些样式的 .highlight
$posts = Post::where('title', 'like', "%$keyword%")->get()->toArray();
foreach($posts as &$post){
  $post['title']=str_replace($keyword,"<span class='highlight'>$keyword</span>",$post['title']);
}

PS 如果您不想将结果转换为数组,您可以直接在 eloquent 模型中编辑图块,但我更喜欢数组以确保我不会意外保存更改