'); $text = preg_replace("/\<(blockquote|strong|pre|ol|ul|li|em|p|s|u).*?\>/is", "<$1>", $text); // 不用去除a标签,上面已经处理过了 $text = preg_replace("/\[:IMAGE:(.*?):(.*?):(.*?):(.*?):(.*?):\]/i", "", $text); $text = preg_replace("/\[:@:(.*?):(.*?):\]/i", "@$2", $text); $text = preg_replace("/\[:#:(.*?):(.*?):\]/i", "#$2", $text); return preg_replace("/^(
<\/p>)+|(
<\/p>)+$/i", "", $text); } /** * 发送消息、修改消息 * @param string $action 动作 * - reply-98:回复消息ID-98 * - update-99:更新消息ID-99 * @param int $dialog_id 会话ID(即 聊天室ID) * @param string $type 消息类型 * @param array $msg 发送的消息 * @param int $sender 发送的会员ID(默认自己,0为系统) * @param bool $push_self 是否推送给自己 * @return array */ public static function sendMsg($action, $dialog_id, $type, $msg, $sender = 0, $push_self = false) { $link = 0; $mtype = $type; if ($type === 'text') { if (str_contains($msg['text'], 'whereDialogId($dialog_id)->first(); if (empty($dialogMsg)) { throw new ApiException('消息不存在'); } if ($dialogMsg->type !== 'text') { throw new ApiException('此消息不支持此操作'); } if ($dialogMsg->userid != $sender) { throw new ApiException('仅支持修改自己的消息'); } // $updateData = [ 'mtype' => $mtype, 'link' => $link, 'msg' => $msg, 'modify' => 1, ]; $dialogMsg->updateInstance($updateData); $dialogMsg->key = $dialogMsg->generateMsgKey(); $dialogMsg->save(); // $dialog->pushMsg('update', array_merge($updateData, [ 'id' => $dialogMsg->id ])); // return Base::retSuccess('修改成功', $dialogMsg); } else { // 发送 if ($reply_id && !self::whereId($reply_id)->increment('reply_num')) { throw new ApiException('回复的消息不存在'); } // $dialogMsg = self::createInstance([ 'dialog_id' => $dialog_id, 'dialog_type' => $dialog->type, 'reply_id' => $reply_id, 'userid' => $sender, 'type' => $type, 'mtype' => $mtype, 'link' => $link, 'msg' => $msg, 'read' => 0, ]); AbstractModel::transaction(function () use ($dialog, $dialogMsg) { $dialog->last_at = Carbon::now(); $dialog->save(); $dialogMsg->send = 1; $dialogMsg->key = $dialogMsg->generateMsgKey(); $dialogMsg->save(); }); // $task = new WebSocketDialogMsgTask($dialogMsg->id); if ($push_self) { $task->setIgnoreFd(null); } Task::deliver($task); // return Base::retSuccess('发送成功', $dialogMsg); } } }