有关PHP、HTML单引号、双引号转义以及转成HTML实体的那些事!
一、单引号和双引号转义在PHP的数据存储过程中用得比较多,即往数据库里面存储数据时候需要注意转义单、双引号;
先说几个PHP函数:
1、addslashes — 使用反斜线引用(转义)字符串;
返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。
一个使用 addslashes() 的例子是当你要往数据库中输入数据时。例如,将名字 O'reilly 插入到数据库中,这就需要对其进行转义。大多数据库使用 \ 作为转义符:O\'reilly。这样可以将数据放入数据库中,而不会插入额外的 \。当 PHP 指令 magic_quotes_sybase 被设置成 on 时,意味着插入 ' 时将使用 ' 进行转义。默认情况下,PHP 指令 magic_quotes_gpc 为 on,它主要是对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。
2、stripslashes — 去掉字符串的反斜杠引用(转义)
即同addslashes()做相反的工作;
3、get_magic_quotes_gpc --- 检测魔术引用变量是否开启,倘若开启返回1,为开启则返回0;
if (!get_magic_quotes_gpc()) {
$lastname = addslashes($_POST['lastname']);
} else {
$lastname = $_POST['lastname' ];
}
echo $lastname;
$sql = "INSERT INTO lastnames (lastname) VALUES ('$lastname')";
二、谈转义实体问题:
我们经常会遇到关于留言板之类的可以让用户输入信息的地方,这些地方都是需要注意的,因为不做转实体之类的话,html代码、script脚本可以轻易的被输入保存,并被其他用户执行;
所以类似用户在输入文本内输入<a href="xxx">hello</a>之类的,我们尽量要屏蔽掉,否则用户会乱搞,比如调CSS样式等,那样,我们页面将一塌糊涂。废话不多说,这里有几个关于PHP转实体的函数需要详细了解:
1、htmlspecialchars() 转义特别的字符为HTML实体;
'&' (ampersand) becomes '&'
'"' (double quote) becomes '"' when ENT_NOQUOTES is not set.
''' (single quote) becomes ''' only when ENT_QUOTES is set.
'<' (less than) becomes '<'
'>' (greater than) becomes '>'
2、htmlspecialchars_decode()将实体转成HTML代码,函数1的反函数
3、 htmlentities()这个是全部转换html实体,和htmlspecialchars()区别在于,这个函数是转义全部的字符,而htmlspecialchars()仅仅转义上面限定的5个特殊字符!
ref: http://www.cnblogs.com/terryglp/articles/1900503.html
分享到:
相关推荐
PHP有一个名为`magic_quotes_gpc`的配置选项,当它开启时,PHP会自动对提交到服务器的数据进行转义,包括单引号、双引号以及反斜杠。如果你不希望这种自动转义发生,可以有两种方法: 方法一:在php.ini配置文件中...
在C#转义字符中,\n表示回车换行,\t表示横向跳到下一制表位置,\v表示竖向跳格,\b表示退格,\r表示回车,\f表示走纸换页,\\表示反斜线符,\'表示单引号符,\"表示双引号符,\a表示鸣铃,\ddd表示1~3位八进制数所...
PHP单引号及双引号均可以修饰字符串类型的数据,如果修饰的字符串中含有变量(例$name);最大的区别是: 双引号会替换变量的值,而单引号会把它当做字符串输出。 例如: <?php $name=string; echo 字符串 . '...
在双引号和单引号字符串中都可以使用反斜杠(\)进行转义。例如,如果你想在字符串中包含一个双引号,你可以写成 `\"`。单引号字符串中,反斜杠主要用于转义单引号自身,如 `\'`。 4. 复杂变量嵌套: 如果要在...
SQL语法关于&、双引号、和单引号的解释 在ASP中使用SQL时,需要了解&、双引号、和单引号的使用规则。下面将详细解释它们的意义和使用方法。 1. &连接运算符 &是连接运算符,它可以将两个字符串连接成一个字符串。...
4.5 Python核心基础知识之单引号、双引号、三引号与转义字符串.mp4
字符串可以由单引号('')或双引号(" ")包围,但它们之间存在关键性的区别,这些差异主要体现在变量解析、转义序列处理以及多行字符串定义上。 ### 变量解析 **双引号(" ")**: 当使用双引号包围字符串时,PHP会解析...
在PHP编程语言中,单引号(')和双引号(")在处理字符串时有不同的行为,这在编写代码时需要特别注意。本篇文章将详细介绍这两种引号的区别以及如何防止它们在页面上被转义。 首先,让我们来理解PHP中的`magic_...
ORACLE 单引号转义: 在ORACLE中,单引号有两个作用: 1:字符串是由单引号引用 2:转义。 单引号的使用是就近配对,即就近原则。而在单引号充当转义角色时相对不好理解 1.从第二个单引号开始被视为...
除了单引号和双引号之外,还可以使用转义字符 `\` 来保护某些特殊字符不被shell解析。例如,如果你想在命令行中输入一个实际的美元符号 `$` 而不是作为变量前缀,可以使用转义字符: ```bash $ echo \$var $var ```...
相反,单引号字符串不会解析这些转义序列,除非它们是变量的一部分,如 "\$name"(在双引号中会被解析为 "$name",在单引号中则保持原样)。 3. 性能考量: 由于单引号字符串不需要进行变量解析和特殊字符转义,...
这个函数用于保护字符串中的特殊字符不被HTML解释器误识别,例如,将双引号转义为 `"`,单引号转义为 `'`。 总的来说,JavaScript的字符串处理功能强大,通过正则表达式和`replace()`方法,我们可以轻松...
单引号和双引号都是用来表示字符串的,但它们有一个重要的区别:单引号需要使用转义符来转义引号内的单引号,而双引号可以自动识别引号内的转义符。例如,如果你想表示字符串"Let's go",使用单引号需要写成`s = '...
在JavaScript中,反斜杠(\)用于转义特殊字符,例如"\n"表示换行,"\t"表示制表符,"\\"表示反斜杠本身,而"\'"和'\"'分别用来转义单引号和双引号。JavaScript中还有一类特殊的转义序列,如"\u0026"用于表示ASCII码...
而双引号则支持更多的转义序列,包括'\n'、'\r'、'\t'以及'\v'(垂直制表符)等。这使得双引号在需要插入特殊字符时更为方便。 其次,关于变量的解析,这是单引号与双引号之间最重要的区别。在单引号字符串中,变量...
MySQL数据库解析SQL时,单引号用于定义字符串常量,如果在字符串内直接出现单引号,不进行转义,就会导致解析错误。 为了解决这个问题,我们可以使用字符串的replace()函数来替换参数中的单引号。在Python中,单...
` - 分别代表左单引号 ‘ 和右单引号 ’。 11. `“` 和 `”` - 分别代表左双引号 “ 和右双引号 ”。 12. `…` - 代表省略号 …。 掌握这些HTML转义字符对于编写符合规范且无误的HTML代码至关重要...