本文目录导读:

我来详细说明PHP接入内容审核API的方法,以百度AI内容审核和阿里云内容安全为例。
百度AI内容审核接入
前期准备
// 1. 安装SDK composer require baidu-aip/php-sdk
代码实现
<?php
require_once 'vendor/autoload.php';
use AipContentCensor;
class ContentModeration {
private $client;
public function __construct($appId, $apiKey, $secretKey) {
$this->client = new AipContentCensor($appId, $apiKey, $secretKey);
}
// 文本审核
public function textCensor($text) {
try {
$result = $this->client->textCensorUserDefined($text);
// 解析结果
if ($result['conclusionType'] == 1) {
return ['passed' => true, 'message' => '审核通过'];
} elseif ($result['conclusionType'] == 2) {
return ['passed' => false, 'message' => '内容违规'];
} else {
return ['passed' => false, 'message' => '需要人工审核'];
}
} catch (Exception $e) {
return ['passed' => false, 'message' => $e->getMessage()];
}
}
// 图片审核
public function imageCensor($imagePath) {
try {
$image = file_get_contents($imagePath);
$result = $this->client->imageCensorUserDefined($image, 'BASE64');
return $this->parseResult($result);
} catch (Exception $e) {
return ['passed' => false, 'message' => $e->getMessage()];
}
}
private function parseResult($result) {
if ($result['conclusionType'] == 1) {
return ['passed' => true, 'message' => '审核通过'];
} else {
$errorMsg = $result['data'][0]['msg'] ?? '内容违规';
return ['passed' => false, 'message' => $errorMsg];
}
}
}
// 使用示例
$moderation = new ContentModeration('your_app_id', 'your_api_key', 'your_secret_key');
$result = $moderation->textCensor('测试内容');
print_r($result);
安全
前期准备
// 1. 安装SDK composer require alibabacloud/green // 2. 配置阿里云AccessKey
代码实现
<?php
require_once 'vendor/autoload.php';
use AlibabaCloud\Green\Green;
use AlibabaCloud\Client\AlibabaCloud;
class AliyunContentModeration {
private $client;
public function __construct($accessKeyId, $accessKeySecret) {
AlibabaCloud::accessKeyClient($accessKeyId, $accessKeySecret)
->regionId('cn-shanghai')
->asDefaultClient();
$this->client = new Green();
}
// 文本审核
public function textModeration($content) {
try {
$result = $this->client->textScan()
->withTasks([[
'dataId' => uniqid(),
'content' => $content
]])
->withScenes(['antispam']) // 场景:反垃圾
->request();
$body = $result->toArray();
return $this->handleResult($body);
} catch (Exception $e) {
return ['passed' => false, 'message' => $e->getMessage()];
}
}
// 图片审核
public function imageModeration($imageUrl) {
try {
$result = $this->client->imageScan()
->withTasks([[
'dataId' => uniqid(),
'url' => $imageUrl
]])
->withScenes(['porn', 'terrorism', 'ad']) // 审核场景
->request();
$body = $result->toArray();
return $this->handleResult($body);
} catch (Exception $e) {
return ['passed' => false, 'message' => $e->getMessage()];
}
}
private function handleResult($body) {
if (isset($body['data'][0]['results'])) {
$results = $body['data'][0]['results'];
foreach ($results as $item) {
if ($item['suggestion'] !== 'pass') {
return [
'passed' => false,
'label' => $item['label'],
'message' => '内容违规:' . $item['label']
];
}
}
return ['passed' => true, 'message' => '审核通过'];
}
return ['passed' => false, 'message' => '审核异常'];
}
}
// 使用示例
$moderation = new AliyunContentModeration('your_access_key_id', 'your_access_key_secret');
$result = $moderation->textModeration('需要审核的文本内容');
通用封装接口
<?php
interface ContentModerationInterface {
public function textCheck($content);
public function imageCheck($imageUrl);
public function videoCheck($videoUrl);
}
class ContentModerationService implements ContentModerationInterface {
private $provider;
public function __construct($provider = 'baidu') {
$this->provider = $provider;
$this->initProvider();
}
private function initProvider() {
switch ($this->provider) {
case 'baidu':
$this->client = new AipContentCensor(
getenv('BAIDU_APP_ID'),
getenv('BAIDU_API_KEY'),
getenv('BAIDU_SECRET_KEY')
);
break;
case 'aliyun':
// 初始化阿里云客户端
break;
default:
throw new Exception('Unsupported provider');
}
}
public function textCheck($content) {
// 具体实现...
}
public function imageCheck($imageUrl) {
// 具体实现...
}
public function videoCheck($videoUrl) {
// 具体实现...
}
}
集成到Laravel框架
<?php
// config/contentmoderation.php
return [
'default' => env('CONTENT_MODERATION_PROVIDER', 'baidu'),
'providers' => [
'baidu' => [
'app_id' => env('BAIDU_APP_ID'),
'api_key' => env('BAIDU_API_KEY'),
'secret_key' => env('BAIDU_SECRET_KEY'),
],
'aliyun' => [
'access_key_id' => env('ALIYUN_ACCESS_KEY_ID'),
'access_key_secret' => env('ALIYUN_ACCESS_KEY_SECRET'),
],
],
];
// 在控制器中使用
use App\Services\ContentModerationService;
class PostController extends Controller {
public function store(Request $request) {
$moderation = new ContentModerationService();
$result = $moderation->textCheck($request->input('content'));
if (!$result['passed']) {
return response()->json([
'success' => false,
'message' => '内容审核未通过:' . $result['message']
], 422);
}
// 审核通过,继续处理
}
}
注意事项
- API密钥安全:不要将API密钥硬编码在代码中,使用环境变量
- 错误处理:做好异常捕获和日志记录
- 并发处理:考虑队列处理大量审核请求
- 缓存策略:对重复内容可以缓存审核结果
- 白名单机制可以设置白名单跳过审核
这样,你就可以在PHP项目中快速集成内容审核功能了。