tohokuaikiのチラシの裏

技術的ネタとか。

Confluenceのプラグイン開発を承ります。ご連絡はこちらのホームページからお願いいたします。

PHPで検索キーワードを「”」みたいなクォート区切りを有効にしたGoogleみたいな感じで抜き出す方法

Google

なにか "PHP function" で検索

みたいにすると、"PHP function"っていう文字列で検索してくれるじゃないですか。あのキーワードの取り出し方を知りたいなと思って検索してみたんですが、正規表現一発で取れるものとかなくってしょうがないなーって感じでPHPで日和ってみた結果です。

<?php
function getSearchKeywords($text) 
{
    $keywords = array();
    while (preg_match('/"([^\"]+)"/', $text, $m)){
        $text = str_replace($m[0], '', $text);
        $keywords[] = $m[1];
    }
    return array_filter(array_merge($keywords, explode(" ", $text)));
}
$text = 'aaa "bbb ccc" ddd eee "fff" ggg "hhh iii jjj" kkk';
var_dump(getSearchKeywords($text)); 

 ↓

array(8) {
  [0]=>
  string(7) "bbb ccc"
  [1]=>
  string(3) "fff"
  [2]=>
  string(11) "hhh iii jjj"
  [3]=>
  string(3) "aaa"
  [5]=>
  string(3) "ddd"
  [6]=>
  string(3) "eee"
  [8]=>
  string(3) "ggg"
  [10]=>
  string(3) "kkk"
}