LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: yanglei1979

重量级问题:请问做MYSQL搜索的时候,如何过滤HTML代码

[复制链接]
发表于 2007-8-15 01:26:08 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2007-8-15 09:17:52 | 显示全部楼层
Post by yanglei1979
你说的先把MYSQL中的内容拿到数组中,再用PHP的字符串运算来过滤解决,当然是可以了

这样的话,用PHP的正则表达式,数组,排序函数等,连合使用,再复杂的要求也是可以实现的,甚至我只要用一个过滤HTML代码的函数就可以搞定

但是,有一个问题就是:我的这些过滤运算是要在取数据的时候完成的,要不然的话,就没法实现数据的分页读出了.

再者,如果数据库内有几十万条甚至百万条数据的话,难道我要把这些全一次性读出到数组中,然后一一比较运算吗?这是不现实的,也是不可能的.

请记住我们用PHP+MYSQL的一个首要前提条件:那就是:每次我们是来处理一页的符合条件的几十条数据的,哪怕是数据量再大,我们不可能一次用PHP来处理的,要是这样的话,就失去使用数据库的意义了.


我的意思是你先用sql语句把你要查询的结果全部查出来,不管是分页还是其它的,分页的话,只是把一个页面的内容查出来,就算有排序,正则,也只是对你要显示的数据你一页显示有100条数据,也只是循环100次....用mysql把html标签去了,就算写出来我感觉sql语句的郊率也会比较低.


1:按条件从数据库中把数据读出来,在数据库中只是不进行去除html标签的处理
2:把要显示的数据用正则把html标签去除
回复 支持 反对

使用道具 举报

发表于 2007-8-15 09:19:28 | 显示全部楼层
还有.就是不要想的太完美,往往就是追求这种东西..时间全部浪费在上面了......

看你说discuz你对discuz应该有了解...你也可以学dz,在存储数据之前加入自订义标签,
如数据的两边加上
<newdata>这是我的数据<table>这是我的数据</table>这是我的数据</newdata>
这样您在读数据的时候只是关心<newdata></newdata>标签内的东西...
回复 支持 反对

使用道具 举报

发表于 2007-8-16 17:09:56 | 显示全部楼层
给你之前就知道肯定不行了...
strip_tags是王道
回复 支持 反对

使用道具 举报

发表于 2007-8-16 17:48:59 | 显示全部楼层
是啊  strip_tags,老不用这个函数都忘记了,用msyql查出的数据,不用使正则了,,直接用strip_tags过滤就ok了,但是我感觉加标签的感觉更好,看楼主的需求了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-16 19:07:55 | 显示全部楼层
Post by 基督山伯爵
mysql的正则不怎么地。你还是用php处理吧。
ps:你的这种要求也太诡异。一般我会存二份,一份纯文本格式,用php函数一下就搞定了。另一份存html格式。
剩下后面你爱怎么玩随便你。



决定按伯爵的方法做

原来是用一个字段存放文章内容,现在我要用两个字段存放文章内容,比如: info 存放带HTML代

码的全部内容, info2 字段存放过滤掉HTML标签的内容,搜索的时候,就搜索 info2 字段,输出的

时候,就输出info1字段,这样应该可以解决


法国的伯爵贵族确实不一般啊,有欧洲的骑士风尚.

这个当官的厉害.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-16 19:09:39 | 显示全部楼层
Post by jame298
发一个您存在数据库里的内容!


非常感谢,一语惊醒梦中人.让我找到了补充问题的最佳思路.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-16 19:13:15 | 显示全部楼层
Post by nbxmedia
给你之前就知道肯定不行了...
strip_tags是王道


非常感谢提供 strip_tags()函数
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表