Laravelで2ちゃんねるのスレッドを取得する【PHP】

Page : ( 2 / 3 )


3.取得したタグの置換

2でフィルターをかけてスレッドのhtmlタグのみに絞込みましたが、
閉じタグがなかったりと、正しいhtmlフォーマットではありません。
なので正しい形式に置換します。
(恐らく2chの仕様上)

// 置換したいタグ
private function _keywords()
{
  return ['<dt>', '<dd>', '<br><br>', '&gt;&gt;'];

}


この関数では、どの様にタグを置換するかの設定します。
そのままではスレッドは<dt><dd>タグなので、任意のタグに変えたり、classをつけることが可能です

// 置換するタグ
private function _replaceWords()
{
  /* example
   * ['<dt class='redColor'>', '<dd class='greenColor'>', '', ''];
   */
   return ['<dt>', '</dt><dd>', '</dd>', '&gt;&gt;'];

}


* タグを一斉に置換(2のprivate関数の呼び出し)

// タグの置換
private function converter($url)
{
   return str_replace(
             $this->_keywords(),
             $this->_replaceWords(),
             $this->threadHandler($url)
           );
}

 

4.htmlタグの除去(htmlタグで取得したくない場合)

ここではhtmlタグではなく、テキスト形式で出力したい時の処理です。
illuminateのcollectionのmap関数を使って一気にhtmlタグの除去をします。

map関数を使うことによって、空の変数を作ったり、foreachを使わずに済みます。

// htmlタグを除去
private function tagRemove($url)
{
   return collect($this->threadHandler($url))
             ->map(function ($item) {
                     return strip_tags($item);
                   });
}


5.スレ取得(完成)

先ほど作ったprivate関数をラップして一つにまとめ完成です。

htmlタグとして出力する関数と、テキストとして出力する関数を作りました。

* htmlタグとして表示 (3の関数を使用)

public function execute_html($url)
{
   return $this->converter($url);

}


* テキストとして表示 (4の関数を使用)

// htmlタグを除去して表示
public function execute($url)
{
   return $this->tagRemove($url);

}


次のページではフルコードを載せています

この記事のカテゴリ
プログラミング

この記事に付けられているタグ



その他の運営サービス

最新の記事