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, '&');
php mysql html 转义字符_php, html, javascript, mysql 之间的特殊字符处理相关推荐
- mysql+php+服务器配置_php服务器配置(php+mysql+iis)步骤
本文介绍了php服务器配置的详细步骤,环境为php+mysql+iis,掌握下php环境搭建的方法,有需要的朋友参考下. 本节内容: php服务器环境搭建方法. 软件准备 iis6.php-5.2.8 ...
- php mysql需要服务器配置_php服务器配置(php+mysql+iis)步骤
本节内容: php服务器环境搭建方法. 软件准备 iis6.php-5.2.8-win32.fcgisetup32.mysql-5.0.27-win32 安装过程 一.安装 php服务器环境 1.ph ...
- php mysql 实现原理_PHP底层和mysql的通信原理
要清楚的几个概念: FPM进程:进程数在php-fpm.ini中设置.没有设置 max_requests ,那么进程是不会销毁的,也就是说当一个进程里面出现死循环或者内存溢出等导致进程僵死的情况出现的 ...
- php框架 mysql拼接操作_PHP对数据库MySQL的连接操作
PHP对数据库MySQL的连接操作 PHP可以利用扩展.框架进行对数据库的CURD操作.当连接MySQL数据库服务器的时候,PHP中提供的用于MySQL的主要API有三种:mysql扩展.mysqli ...
- php mysql json 转义字符_PHP转义Json里的特殊字符的函数
在给一个 App 做 API,从服务器端的 MySQL 取出数据,然后生成 JSON.数据中有个字段叫 content,里面保存了文章内容,含有大量 HTML 标签,这个字段在转 json 的时候需要 ...
- php mysql备份代码_PHP备份/还原MySQL数据库的代码
以下是代码: 一.备份数据库并下载到本地[db_backup.php] // 设置SQL文件保存文件名 $filename=date("Y-m-d_H-i-s")."-& ...
- php mysql修改命令_PHP编程:mysql alter table命令修改表结构实例详解
<PHP编程:mysql alter table命令修改表结构实例详解>要点: 本文介绍了PHP编程:mysql alter table命令修改表结构实例详解,希望对您有用.如果有疑问,可 ...
- php mysql 获取错误_php怎样获取mysql错误信息
[摘要] PHP即"超文本预处理器",是一种通用开源脚本语言.PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言.PHP独特的语法混合了C.Java.Perl以及 ...
- php mysql查询时间_php查询时间段 mysql时间查询
本节内容: mysql时间查询 数据表的结构: 复制代码 代码示例: CREATE TABLE IF NOT EXISTS `user_log` ( `id` varchar(100) NOT NUL ...
最新文章
- 学javascript有哪些开发工具
- 保障数据安全,强调科技向善,旷视发布《人工智能应用准则》
- Netflix 开源用于 Spring Boot的 GraphQL 服务框架DGS
- vFORUM十大“最”看点,带你“撩”会议
- 数论基础之快速幂(详细教程)
- Redis 基本操作一
- linux kafka离线安装,centos 离线安装confluent_kafka 模块
- python3 slice
- 了解一下Golang的市场行情
- 实验二 php基本语法1,实验二PHP基础.doc
- 远程连接桌面报:这可能是由于credssp加密oracle修正
- python3.5之输出HTML实体字符
- Hadoop2源码分析-YARN 的服务库和事件库
- c++ SIMD AVX2比较 例子
- RadASM的主题更换!
- 引擎之旅 前传:C++代码规范
- 个推技术 | 厂商和App必看!统一推送UPS最全解读和快速接入指南
- SAP ABAP 调用 BAPI_GOODSMVT_CREATE 没有执行 MIGO/MB0A 相同检查的问题
- Node.js使用jsrsasign实现SHA256withRSA加密算法
- 2021年电赛元器件物品清单
热门文章
- ad10怎么挖铺的铜_赣州“云星公园大观”的商铺,5米层高变4.5米,开发商挖地来凑?...
- mysql storm_flume+kafka+storm+mysql架构设计
- c++类指针赋值表达式必须是可修改的左值_C++学习刷题8--复制构造函数和赋值运算符重载函数...
- 终端滑模matlab程序,滑模变结构控制 MATLAB程序
- 点乘叉乘坐标公式_点积与叉乘的运算与物理意义
- [蓝桥杯][2018年第九届真题]日志统计(树状数组)
- [蓝桥杯][2015年第六届真题]表格计算(递归+记忆化)
- Crazy Diamond CodeForces - 1148C(思维构造)
- Super-palindrome(思维)
- 阿里妈妈技术团队 6 篇论文入选 CIKM 2021