文章を解析して#を付与して返却。
SNSでの使用することを考えて作りました。文章を解析して名詞と形容詞の文字の先頭に#を付与して返却します😌。
レンタルサーバーでは動きませんがawsやgcp,vpsなどでは動く作りになっています。
作った経緯はこういうサービスが無かったので作りました?。
因みにexecの脆弱性が気になるところですので対応が必要かもです🙇。
※phpやPythonのインストールはご自身で行ってください。
#前処理 mecab-python3バージョンは1.0.8です
sudo apt-get install mecab libmecab-dev mecab-ipadic-utf8
sudo pip install mecab-python3
pip install unidic-lite
sharpPost.php
<?php
class sharpPost
{
/**
* mecab.pyを使って文章を解析(名詞と形容詞を取り出す)
* @param $posstData
* @return array|null
*/
public function analysis($postData)
{
if(!$postData)return null;
$word = null;
exec('python py/mecab.py "'.strip_tags(htmlentities($postData)).'"',$output);// 2>&1
if(is_array($output)){
foreach($output as $val){
$analysisWord = explode("\t",$val);
if(isset($analysisWord[1]) && preg_match('/(名詞|形容詞)/',$analysisWord[1])){
$word[] = $analysisWord[0];
$word = array_unique($word);
}
}
}
return $word;
}
/**
* 文字列を置き換える処理
* @param $postData
* @param $word|null
* @return string
*/
public function replacePostData($postData='',$word=null)
{
if(is_array($word)){
foreach($word as $val){
$postData = preg_replace("/({$val})/u"," #{$val} ",$postData);
}
}
return $postData;
}
}
$textData = '単なる自分が使いたい機能です、無かったので作ってみただけです。';
$sharpPost = new sharpPost();
$word = $sharpPost->analysis($textData);
print(($sharpPost->replacePostData($textData,$word)).PHP_EOL);
py/mecab.py
import MeCab
import sys
args = sys.argv
if(args[1]):
tagger = MeCab.Tagger()
print(tagger.parse(args[1]))