php mysql html 转义字符_php, html, javascript, mysql 之间的特殊字符处理

特殊字符指在程序中有具有特殊的控制意义的字符,一般来讲各个程序语言所使用的特殊字符大部分都来源于传统的 C 语言,加上自身的扩展,便较为完整的满足了编程需求。    程序自身的转义处理能够解决自身的处理需求,问题基本上都集中在程序语言之间的不同转移策略所带来的匹配差异上。几乎对所有语言来说单引号(')和双引号(")都会带来一些麻烦。    php 中对字符的转义采用反斜杠(\),再与数据库进行交互时采用的函数有:1 addslashes($str);

这个函数是重新生成一个转义后的字符串,使用时要注意。    如 $str = '""""""""';//这个解析没有问题,但是输出时就会出现问题;1 htmlspecialchars($str);

这个是在输出时处理对 html 具有特殊意义的字符;1 striptslashes($str);

这个是在输出时去掉转义用的反斜杠(\)        Javascript 中则使用反斜杠(\)对特殊字符转义;    查询特殊字符无法使用(#, ?, =, &)的原因是因为该类特殊字符属于 html 语言 url参数传递(Get 方式)时用来进行参数拼接的,直接使用会导致参数传递紊乱,结局方法是:前台字符串参数传递使用 javascript 的 urlencode 内置函数进行包裹,将字符串参数中的特殊字符转为相应的 unicode 编码,php 取参时无需进行处理,能够直接显示该 unicode 所代表的特殊字符。        Php 与 Mysql 中需要特别注意对于反斜杠(\)的转义处理。反斜杠是比较通用的转义    符号,要匹配字符串中的反斜杠字符('\'),原则上来说只需要使用 2 个反斜杠(\\)    就可以了,但是 php 与 mysql 中在进行反斜杠匹配时却需要 3 或 4 个反斜杠(\\\\)    来匹配 1 个字符串中的反斜杠(\)。如为了将字符串中的 1 个反斜杠替换为 4 个反斜    杠(\\\\)以使 sql 语句能够匹配数据库中的具有 1 个反斜杠(\) 的字段的记录,需要    使用以下的转换:= ("/\\\\/", "\\\\\\\\\\\\\\\\", );

= ("/'/", "''", );

= ("/_/", "'_", );

= ("/%/", "'%", );

这样数据库中的匹配才是合理的。使用之后,为了将 $str 回显,要做相应的逆向处理:= ("/\\\\\\\\\\\\\\\\/", "\\\\", );

= ("/''/", "'", );

= ("/'_/", "_", );

= ("/'%/", "%", );

= ();

这样便满足了特殊字符的查询处理需求。    sql 中的特殊字符有下划线(_), 百分号(%),和单引号(');1) php (\) 转义符问题  sql 中有特殊含义:表示换行  需要转为 \\\ (3个) 进行匹配;  写成三个'\'的原因是反斜线符号会被语法分析程序剥离一次,在进行模式匹配时,  又会被剥离一次,最后会剩下一个反斜线符号接受匹配  如:  数据库中有数据如下:1 "*_.%'"a@k2 "*_.%'"a@k\'3 "*_.%'"a@k\\4 "*_.%'"a@k\\\5 "*_.%'"a@k\\\\1     搜索    "*_.%'"a@k       会匹配 "*_.%'"a@k;2     搜索    "*_.\%'"a@k      会匹配 "*_.%'"a@k;1     搜索    "*_.%'"a@k\      sql 会报语法错误2     搜索    "*_.\%'"a@k\     sql 会报语法错误1     搜索    "*_.%'"a@k\\     匹配 0 行2     搜索    "*_.\%'"a@k\\    匹配 0 行1     搜索    "*_.%'"a@k\\\%   匹配结果如下:2     "*_.%'"a@k\'3     "*_.%'"a@k\\4     "*_.%'"a@k\\\5     "*_.%'"a@k\\\\1     搜索    "*_.%'"a@k\\\\%   匹配结果如下:2     "*_.%'"a@k\'3     "*_.%'"a@k\\4     "*_.%'"a@k\\\5     "*_.%'"a@k\\\\1     搜索    "*_.\%'"a@k\\\\\  匹配 0 行2     搜索    "*_.\%'"a@k\\\\\\ 匹配 0 行3     搜索    "*_.\%'"a@k\\\\\\\ 匹配 1 行4     搜索    "*_.\%'"a@k\\\\\\\\ 匹配 1 行

总结:反斜杠做查询时要变 1 个为 4 个,这样总能得到正确的结果。  另:1 $senameEnter = preg_replace("/\\\/", "\\\\\\\\\\\\\\\\", $senameEnter);

这句代码将 $senameEnter 中的一个反斜杠(\)替换为四个反斜杠(\\\\),以匹配    sql 中查询一个反斜杠(\)需要用四个反斜杠(\\\\)去匹配。    为了统一替换的数值可以设为使用四个反斜杠(\\\\)替换一个,如下面代码:1     $senameEnter = preg_replace("/\\\\/", "\\\\\\\\\\\\\\\\", $senameEnter);

php 正则表达式中反斜杠(\)是用来进行特殊字符转义的,匹配反斜杠原则上只要    使用两个反斜杠(\\),但是实际使用时却需要三个反斜杠(\\\)进行匹配。php 字符    串中需要由四个反斜杠(\\\\)来表示一个反斜杠的替代。详细的原因比较复杂,需要        根据程序设计的内部机制进行解释。        2) & 符号问题        & 符号的问题原因是:在url传递参数时这个符号代表了传递字符的连接符。    同样存在问题的还有等号(=)和问号(?)。    解决方法:        js 拼凑URL时先对这三个符号进行处理,传递之后再进行逆向处理。    如果编码是将其编码为相应的unicode码,后台无需在特别处理。1 url = url.replace(/\?/g,"%3F").replace(/&/g,"%26").replace(/=/g,"%3D");

使用 jquery 取出来的字符串如果包含 '&' 符号,javascript 会将其妆化为相应的等式实体 &    回显需要进行特别处理(无内置函数):1 sename = $(obj).html().replace(/&/g, '&');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245142.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python matplotlib_Python の Matplotlib

matplotlib是python优秀的数据可视化第三方库。matplotlib.pyplot子库可以调用全部功能,便于用户使用。绘图-plt.plot(x,y,format,**kwargs)x:x轴数据y:y轴数据format_string:控制曲线的格式字符串,颜色线条点**kwargs…

mysql 数据库还原 不齐_请教mysql数据库还原问题。

你的位置:问答吧-> 数据库-> 问题详情请教mysql数据库还原问题。50多m,能不能拆分?上传到服务器上总是超时。怎么办?[ 本帖最后由 geniux 于 2007-9-24 15:23 编辑 ]作者: geniux发布时间: 2007-09-20继续请教,现在数据库传…

python self理解_Python面向对象总结,让你快速掌握面向对象常用的用法

python等面向对象的提出是为了更好的处理和管理同属一个类别的事情,这样就可以省去多余重复的基础代码,让程序变得更加简洁和强大。对于学习编程的朋友来说,熟悉掌握面向对象是非常重要的。下面开始讲讲关于python面向对象的知识,…

mysql 查询 汇总_Mysql-Sql查询汇总

软件测试Mysql-Sql查询汇总简单查询创建students表create table students(id int not null unique primary key auto_increment,name varchar(10) not null,class varchar(10) not null,grade int)添加数据insert into students values(0,老1,1班,80);insert into students val…

pat和ccf哪个含金量高_函授和网络教育哪个好 哪个含金量高

函授和网络教育都是成人教育学习的方式,但是考生报考的时候选择哪个比较好,下面小编整理了相关信息,以供参考。一、函授好还是网络教育好其实这两种教育方式都各有各的优点,两者都是不可替代的,这两种方式对于不同阶段…

mysql各种联结的区别_mysql几种连接方式区别

mysql的几种join2017年03月19日 14:49:07 carl-zhao 阅读数:7845 标签: mysqlsqljoin 更多个人分类: MySQL版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012410733/article/details/63…

python和office_Python在office开发中的应用

Python with Excel 有几个很好的Python模块能够方便地操作Excel的数据,包括读与写,不要求本地安装Excel。例如pandas, openpyxl, xlrd, xlutils 和 pyexcel. 详情可以参考下面的介绍: https://www.datacamp.com/community/tutorials/python-e…

mysql5.7 新增参数_MySQL 5.7 新增参数

参数默认值binlog_group_commit_sync_delay0binlog_group_commit_sync_no_delay_count0binlog_transaction_dependency_history_size25000binlog_transaction_dependency_trackingCOMMIT_ORDERcheck_proxy_usersOFFdefault_authentication_pluginmysql_native_passworddefault_…

android通过用户名密码访问服务器获取信息_MySQL ------ 管理用户对数据库的访问控制(GRANT 与 REVOKE)(二十九)...

数据库服务器通常包含着关键的数据,所以为了确保这些数据的安全和完整需要要利用访问控制。MySQL服务器的安全基础是:用户应该对他们需要的数据具有适当的访问权,既不能多也不能少(即用户不能对过多的数据具有访问权)访…

mysql 数据库 额外_Manager额外参数怎么学?mysql数据库学习

说明:主库宕机谁来接管?1. 所有从节点日志都是一致的,默认会以配置文件的顺序去选择一个新主。2. 从节点日志不一致,自动选择最接近于主库的从库3. 如果对于某节点设定了权重(candidate_master1),权重节点会优先选择。但是此节点…

mysql安全补丁如何处理_3分钟学会mysql数据库的逻辑架构原理

这篇文章主要是从mysql数据库的逻辑架构来认识掌握mysql的原理。只要是稍微有一点计算机的相关知识相信都能看明白。一、笼统的逻辑架构先给出一张逻辑架构图,这张图是让你从宏观的角度来分析认识一下。从这张图你可以获取到如下的信息:(1&am…

mysql reflush pri_Mysql Flush privileges命令的功能与使用

flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。通常是在…

onclick 源码_仿照React源码流程打造90行代码的Hooks

作者:苏畅转发链接:https://mp.weixin.qq.com/s/YLSD4IojDWTPlov_RQtVAA前言你可能已经看过其它简易的Hooks实现。那么本文和其它实现有什么区别呢?本文的实现完全参照React源码的运行流程。学懂本文,去看React源码,你…

java写一个窗体并连接MySQL_大神帮忙写一个简单地java页面,连接MySQL数据库之后能够显示数据库上的数据...

展开全部用jdbc 连接mysql数据库就行了,网上搜下一大把。--记得在classpath下加入mysql 的jdbc驱动包。/*** author :来e68a84e8a2ad3231313335323631343130323136353331333337386636自互联网*/import java.sql.DriverManager;import java.sql.ResultSet…

java break 在if 中使用_java中使用国密SM4算法详解

前言上次总结了一下加密算法的分类(加密算法有集中形式,各有什么不同?),现在我们用java语言实现一下SM4:无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。ps:我们既可以基…

移动web前端开发框架_移动前端开发是Web前端开发吗?

移动端开发并不是Web前端开发,但移动前端开发和web前端开发其实都属于前端开发的范围,目前前端发展的趋势就是大前端,可以说是包罗万象。但不论趋势如何发展,目前来看HTML、CSS和JavaScript依然是整个前端开发的三大基石。所以不论…

mtk一键usb驱动_三菱MRJEB驱动器报错,导致报错原因37.1参数设置范围异常?

三菱MR-JE-B驱动器报错,导致报错原因37.1参数设置范围异常?最近海蓝机电工程师们在做一个项目,做的是三菱MR-JE-B驱动器。工程师们在实操这个项目过程中遇到各种问题,其中就像驱动器报错的问题,导致报错的原因显示37,1…

mysql 上一条_mysql选择上一条、下一条数据记录

1.表数据结构选择mysql记录上一条,下一条sql语句SELECT * FROM user ORDER BY rank ASC-------------------| ID | rank | name |-------------------| 1 | 1 | admin1 || 2 | 2 | admin2 || 3 | 3 | admin3 || 4 | 4 | admin4 || 5 | 5 | admin5 || 6 | 6 | admin6…

将虚拟主机加入到netskills.net域环境_网站建设阿里云虚拟主机、ECS服务器、企业邮箱选择购买指南...

对于刚接触阿里云的人来说可能看到阿里云的产品介绍页面会比较头晕,各种产品分类,而且同一个产品在不同的分类目录下都能看到,下面简单介绍一下制作网站过程中常用的阿里云的产品。阿里云在网站建设方面常用的服务主要有云虚拟主机、ECS云服务…

lr监控mysql_LR通过SiteScope监控mysql

SiteScope下载,安装要想使用LoadRunner监测MySQL数据库的性能,LoadRunner没有提供直接监测 MySQL的功能,所以,我们需要借助sitescope监控,然后在LoadRunner显示sitescope监测结果,这样间接地监控MySQL性能。…