// 文章内容
$article = '这是一段包含data:image的文章内容。<img src="data:image/png;base64,iVBORw0KG...">这是另一段文字。<img src="data:image/jpeg;base64,/9j/4AAQSk...">';
// 正则表达式模式
$pattern = '/<img[^>]*src="data:image\/([a-z]+);base64,([^">]+)"[^>]*alt=["\'](.*?)["\'][^>]*>/i';
// 匹配data:image标签并处理
$article = preg_replace_callback($pattern, function ($matches) {
$extension = $matches[1]; // 图片扩展名
$base64Data = $matches[2]; // 图片的base64数据
// 解码base64数据
$imageData = base64_decode($base64Data);
// 生成文件名
$fileName = uniqid() . '.' . $extension;
$fileName = 'images/case/'.$fileName;
// 保存图片文件
file_put_contents($fileName, $imageData);
// 返回替换后的图片标签
return '<img src="/' . $fileName . '">';
}, $article);
// 输出处理后的文章内容
echo $article;
案例
<?php
/*
define('IN_DOUCO', true);
require (dirname(__FILE__) . '/include/init.php');
$sql = "SELECT id, title, image, cat_id, link, keytitle, description FROM haci_article";
$query = $GLOBALS->query($sql);
echo $query;
*/
// 连接到数据库
$mysqli = new mysqli("数据库地址", "数据库账号", "数据库密码", "数据库名");
// 检查连接是否成功
if ($mysqli->connect_errno) {
echo "连接数据库失败: " . $mysqli->connect_error;
exit();
}
获取分类信息
/*
$category = "SELECT cat_id, cat_name FROM haci_article_category";
$category = $mysqli->query($category);
// 处理查询结果
if ($category) {
while ($row = $category->fetch_assoc()) {
// 处理每一行数据
// 示例:输出每行数据的某个字段
echo $id = $row['cat_id'].'--------';
echo $article = $row['cat_name'].'<br>';
}
}
*/
//执行查询
$query = "SELECT * FROM haci_article where cat_id in (96,97,98,99,100,101,102)";
$result = $mysqli->query($query);
// 处理查询结果
if ($result) {
while ($row = $result->fetch_assoc()) {
// 处理每一行数据
// 示例:输出每行数据的某个字段
$id = $row['id'];
$article = $row['content'];
/***处理data:images****/
$pattern = '/<img[^>]*src="data:image\/([a-z]+);base64,([^">]+)"[^>]*alt=["\'](.*?)["\'][^>]*>/i';
// 匹配data:image标签并处理
$article = preg_replace_callback($pattern, function ($matches) {
$extension = $matches[1]; // 图片扩展名
$base64Data = $matches[2]; // 图片的base64数据
// 解码base64数据
$imageData = base64_decode($base64Data);
// 生成文件名
$fileName = uniqid() . '.' . $extension;
$fileName = 'images/cases/'.$fileName;
// 保存图片文件
file_put_contents($fileName, $imageData);
// 返回替换后的图片标签
return '<img src="/' . $fileName . '">';
}, $article);
// 输出处理后的文章内容
//echo $article;
/***处理data:images****/
$sql = "UPDATE haci_article SET content = '$article' WHERE id = $id";
if ($mysqli->query($sql) === TRUE) {
echo "文章内容已成功更新";
} else {
echo "更新失败: " . $mysqli->error;
}
}
// 释放结果集
$result->free();
} else {
echo "查询失败: " . $mysqli->error;
}
// 关闭数据库连接
$mysqli->close();
?>