[目次]
LINE Messaging API | Webプログラミング!(2021年度)
予備知識
- 正規表現
正規表現を用いたテキスト処理
ユーザの送信したメッセージ内に特定のパターンがあったとき, そのパターンに応じて返信したいことがあります. これは, PHP のPCRE関数関数群 preg_ナントカを利用して行うことができます.
もっとも有用なのはおそらくpreg_matchで, 特定のパターンがあったかどうかを判定し, そのパターンを文字列として取り出してくれます.
パターンは正規表現で指定します.
サンプル1parrot_preg.php
<?php
require_once("lineconfig2.php");
$received_data = json_decode(file_get_contents('php://input'),t);
$replyToken = $received_data["events"][0]["replyToken"];
$received_text=$received_data["events"][0]["message"]["text"];
mb_regex_encoding("UTF-8"); // プログラム内で1回
$pattern="/\b([a-zA-Z]{3}|\w+坂)[0-9]{2}\b/u";
if( preg_match($pattern,$received_text,$groupname) ){
$message_text="$groupname[0] が好きなの〜?";
} else {
$message_text="つまんな〜い";
}
error_log(print_r($received_data,TRUE));
$messageData = [[
'type' => 'text',
'text' => $message_text
]];
sendMessage($replyToken,$messageData);
function sendMessage($replyToken,$messageData){
global $accessToken;
$post_data=json_encode(['replyToken' => $replyToken, 'messages' => $messageData]);
$ch = curl_init('https://api.line.me/v2/bot/message/reply');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json; charser=UTF-8',
'Authorization: Bearer ' . $accessToken
));
$result = curl_exec($ch);
curl_close($ch);
error_log(print_r($post_data,TRUE));
error_log(print_r($result,TRUE));
return $result;
}
// Local Variables:
// mode:php
// End: