2017-04-04 7 views
0

私はLaravelの内部リンクで作るしようとしています。魔女はデータベースからのキーワードで再植え付けられます。Laravel内部リンクpreg_replaceと

public function getSingle($slug) { 

    $post = Post::where('slug', '=', $slug)->first(); 

    $keyword = Keyword::all(); 
    $data = array(); 

    foreach($keyword as $word){ 
      $data = $word->keyword; 
      $sentence = preg_replace('@(?<=\W|^)('.$data.')(?=\W|$)@i', '<a href="'.$word->url.'">$1</a>', $post->body); 
    } 


    return view('news.single')->withPost($post)->withSentence($sentence); 
} 

このコードはうまくいきますが、データベースからキーワードが1つしかないので、ループごとに問題があります。 配列変数を追加しようとしましたが、同じです。だから私は魔女のショー複数のキーワードを修正する必要があるだけでなく、1つ。

答えて

0

これは、各ループで文章を最後の文にリセットするためです。これを代わりに試してください

public function getSingle($slug) { 

    $post = Post::where('slug', '=', $slug)->first(); 

    $keyword = Keyword::all(); 
    $data = array(); 
    $sentence = $post->body; 

    foreach($keyword as $word){ 
      $data = $word->keyword; 
      $sentence = preg_replace('@(?<=\W|^)('.$data.')(?=\W|$)@i', '<a href="'.$word->url.'">$1</a>', $sentence); 
    } 


    return view('news.single')->withPost($post)->withSentence($sentence); 
} 

したがって、それぞれのキーワードに対して同じ文章を置き換えて、変更されたバージョンを返します。

関連する問題