课程讲解中的这个部分,代码我有些不理解,可以解答下吗?

来源:1-17 字符串转实体函数

kennedyzhou86

2018-10-27 15:12:47

<?php
header('content-type:text/html;charset=utf-8');

$str="A>B,B<C,Tom&John,He said:\"I'm OK\"";

echo htmlspecialchars($str,ENT_QUOTES);

echo '<hr>';
//通过str_replace进行转换

$str2=str_replace('&','&amp;',$str); //必须是第一阶梯
$str2=str_replace('>','&gt;',$str2);
$str2=str_replace('<','&lt;',$str2);
$str2=str_replace('"','&quot;',$str2);
$str2=str_replace('\'','&#39;',$str2);
echo $str2;

我不理解的是下面这个部分-----------

$str2=str_replace('"','&quot;',$str2);
$str2=str_replace('\'','&#39;',$str2);

-----为什么是双引号 和 反斜杠单引号,我们需要转的应该是 反斜杠双引号和 单引号吧?

写回答

2回答

guly

2018-10-29

你好,应该打印出结果产看页面源码,详细如下图:

源码中是

A&gt;B,B&lt;C,Tom&amp;John,He said:"I'm OK"<hr>

所以应该把双引号替换掉,

http://img.mukewang.com/climg/5bd66ec40001764510430734.jpg


http://img.mukewang.com/climg/5bd66f160001ce0605450262.jpg

如果解决您的问题请采纳,祝学习愉快!

0
hennedyzhou86
h 搞懂了,我应该看着两句代码本身 $str2=str_replace('"','&quot;',$str2); $str2=str_replace('\'','&#39;',$str2); 而不是盯着$str="A>B,B<C,Tom&John,He said:\"I'm OK\""; 这句代码看!!!
h018-10-29
共1条回复

guly

2018-10-27

你好,

转义字符,顾名思义会将规定的语法用"\"来输出。但语法规定在不同的系统中转义字符的作用不同,例如:windows下的回车换行符用"\r"或"\n",而Linux 这两就有很大的区别:"\r"光标回到行首,但还在本行; "\n"表示下一行,不会回到行首。

PHP中的转义字符详情如下:

" \' "==>单引号

" \" " ==>双引号

如果解决您的问题请采纳,祝学习愉快!

0
hennedyzhou86
h $str2=str_replace('"','&quot;',$str2); 既然如此,那上面这一行应该是这样写才对呀 $str2=str_replace('\"','&quot;',$str2); 会什么老师讲课的时候,会少些一个反斜杠呢? 这里我不懂!! 因为仔细看这个字符串是这样的 $str="A>B,B<C,Tom&John,He said:\"I'm OK\"";
h018-10-29
共1条回复

0 学习 · 4928 问题

查看课程