php把文章中所有的data:image转换成图片格式

这篇文章展示了一个PHP脚本,该脚本使用正则表达式匹配data:image标签,将Base64编码的图片数据解码并保存为本地文件,然后更新HTML中的img标签引用这些新保存的图片。脚本还涉及到数据库连接和查询,特别是针对haci_article表的内容更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// 文章内容
$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();



?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远的WEB小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值