もうソース貼り付けるだけでいいよね(適当
Windows環境ver
<pre> <?php function exeMecab($str){ //必ず[']で囲むこと $exe_path = 'D:\xampp\MeCab\bin\mecab.exe'; $descriptorspec = array( 0 => array("pipe", "r"), 1 => array("pipe", "w") ); $process = proc_open($exe_path, $descriptorspec, $pipes); if (is_resource($process)) { fwrite($pipes[0], $str); fclose($pipes[0]); $result = stream_get_contents($pipes[1]); fclose($pipes[1]); proc_close($process); } //\tを[,]に変換 $result = str_replace(" ", ",", $result); $tmp = array(); //行で区切って配列に格納 $tmp = explode("\r\n", $result); $num = 0; $resultAry = array(); //各行に対して[,]で区切って配列格納 while($tmp[$num] != "EOS"){ $resultAry[$num] = explode(",", $tmp[$num]); $num++; } return $resultAry; } var_dump(exeMecab("エビフライはおいしい"));
2013年10月11日追記
Linux環境ver
<?php function func($str){ $mecab = new Mecab(); $result = array(); $nodes = $mecab->parseToNode($str); foreach($nodes as $node){ if($node->posid === 0) continue; array_push($result, array("posid" => $node->posid, "surface" => $node->surface)); } return json_encode($result); } $result = func("iPhoneをラインナップに加えたドコモから、冬モデルが発表された。"); $result = json_decode($result); foreach($result as $ary){ echo "品詞:" . $ary->posid . " 文字列:" . $ary->surface ."<br>"; }