PHP 如何从mysql 一个字段中提取内容并过滤所有HTML代码,然後存入另一个字段内?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 如何从mysql 一个字段中提取内容并过滤所有HTML代码,然後存入另一个字段内?相关的知识,希望对你有一定的参考价值。

数据库为data,有表products,字段为products_id,language_id,products_short_description,及 products_description,其中products_description 字段下存的是带html标记的完整HTML页面内容数据,有些还包含有CSS及BODY标签,现在需要提取的内容除<h></h><p></p> 及<UL><li></li></UL>(可保留)外的所有标记可全部过滤掉(包括图片、链接),也就是说只需要正文内容。然後存到相同products_id和language_id对应的products_short_description 字段中。请帮忙一下,谢谢~

本人不擅长写正则,正则部分 你自己看着写吧
步骤 1 首先测试整理products_short_description
1.1 定义一个 变量内容为 products_description 的某一个完整内容
1.2 用正则过滤掉不想要的东西, 将想要的东西整理好
注:这个做完 你已经完成很大一部分内容了
2 备份数据库表 products,将products复制成 products_test表。为了测试 不破坏products表

3 查询出products_test表内容 。获取到每行数据的时候 执行下 步骤1 的内容
4 将步骤一相关正确的结果 放置到一个数组中 产品id为key ,形成的正确结果为value
5 最终 遍历正确的数组。 执行更新 products_test 表

6 当确认 以上无误 ,那你就可以更改products 表了
参考技术A 直接使用str_replace()函数即可。
比如:
str_replace("","<h>","<span><h>test</h></span>");把<h>替换成“空”

语法str_replace(find,replace,string,count)

参数描述
find 必需。规定要查找的值。
replace 必需。规定替换 find 中的值的值。
string 必需。规定被搜索的字符串。
count 可选。一个变量,对替换数进行计数。
参考技术B htmlspecialchars($Param);
传到另一个字段就不用说了吧
参考技术C 就是清楚掉html代码吧 用这个方法试试。
function SpHtml2Text($str)

$str =
preg_replace("/<sty(.*)\\/style>|<scr(.*)\\/script>|<!--(.*)-->/isU","",$str);
$alltext = "";
$start = 1;
for($i=0;$i<strlen($str);$i++)

if($start==0 && $str[$i]==">")

$start = 1;

else if($start==1)

if($str[$i]=="<")

$start = 0;
$alltext .= " ";

else if(ord($str[$i])>31)

$alltext .= $str[$i];



$alltext = str_replace(" "," ",$alltext);
$alltext = preg_replace("/&([^;&]*)(;|&)/","",$alltext);
$alltext = preg_replace("/[ ]+/s"," ",$alltext);
return $alltext;

以上是关于PHP 如何从mysql 一个字段中提取内容并过滤所有HTML代码,然後存入另一个字段内?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Datatables jQuery 插件中提取过滤后的数据?

php mysql 过滤重复记录并排序

使用php从mysql中提取名称的随机顺序

提取 MySQL Blob 并添加到 PHP 数组?

如何从 MySQL 中的数字键嵌套 JSON 字段中提取值

php 读取 json 里面的字段内容