You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PHP+MySQL为数据库句子的指定关键词自动添加span样式标签

原代码错误点
  • 未对句子做词汇级匹配,直接用完整句子与词汇数组比对,无法命中目标词汇
  • 数组遍历逻辑错误:PHP数组默认从0开始索引,循环起始值设为1会漏掉第一条数据,循环条件$j<=count($data)会触发数组越界
  • 存在无效代码:循环内的$data[]没有对应逻辑,属于语法残留
  • 硬编码褒贬词汇列表,不符合从数据库词汇表读取标记规则的需求
完整修改代码
<style>
.positive{
  background-color: green;
  color: #fff;
  padding: 0 2px;
  border-radius: 2px;
}
.negative{
  background-color: red;
  color: #fff;
  padding: 0 2px;
  border-radius: 2px;
}
</style>
<?php
// 替换成你自己的数据库连接配置
$conn = mysqli_connect('localhost', '数据库账号', '数据库密码', '数据库名');
mysqli_set_charset($conn, 'utf8');

// 1. 从词汇表读取所有标记规则,生成替换映射
$replaceMap = [];
$wordQuery = mysqli_query($conn, "SELECT words, type FROM 你的词汇表名");
while ($word = mysqli_fetch_assoc($wordQuery)) {
    $className = $word['type'] == 'good' ? 'positive' : 'negative';
    // \b用于匹配完整单词,避免匹配到单词的一部分,i表示不区分大小写,不需要可以删除
    $pattern = '/\b' . preg_quote($word['words'], '/') . '\b/i';
    $replaceStr = '<span class="' . $className . '">$0</span>';
    $replaceMap[$pattern] = $replaceStr;
}

// 2. 读取句子表,逐句处理输出
$sentenceQuery = mysqli_query($conn, "SELECT sentences FROM 你的句子表名");
while ($row = mysqli_fetch_assoc($sentenceQuery)) {
    $processedSentence = preg_replace(array_keys($replaceMap), array_values($replaceMap), $row['sentences']);
    echo $processedSentence . '<br>';
}

mysqli_close($conn);
?>
功能说明

代码会自动匹配句子中的完整目标词汇,给对应词汇套上指定的span标签,完全符合预期输出效果。如果需要严格区分大小写匹配,删掉正则末尾的i参数即可。


内容的提问来源于stack exchange,提问作者rickyfajrin93

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 17:42:01