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

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

<?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回答

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

源码中是

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

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

http://img1.sycdn.imooc.com//climg/5bd66ec40001764510430734.jpg


http://img1.sycdn.imooc.com//climg/5bd66f160001ce0605450262.jpg

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

  • kennedyzhou86 提问者 #1
    搞懂了,我应该看着两句代码本身 $str2=str_replace('"','&quot;',$str2); $str2=str_replace('\'','&#39;',$str2); 而不是盯着$str="A>B,B<C,Tom&John,He said:\"I'm OK\""; 这句代码看!!!
    2018-10-29 11:45:47
guly 2018-10-27 22:15:32

你好,

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

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

" \' "==>单引号

" \" " ==>双引号

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

  • 提问者 kennedyzhou86 #1
    $str2=str_replace('"','&quot;',$str2); 既然如此,那上面这一行应该是这样写才对呀 $str2=str_replace('\"','&quot;',$str2); 会什么老师讲课的时候,会少些一个反斜杠呢? 这里我不懂!! 因为仔细看这个字符串是这样的 $str="A>B,B<C,Tom&John,He said:\"I'm OK\"";
    2018-10-29 06:59:31
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
PHP小白零基础入门
  • 参与学习           人
  • 提交作业       626    份
  • 解答问题       4930    个

想要学好Web后端开发的中流砥柱语言,本阶段为你轻松铺就扎实的基础,从前端网页布局的搭建到后台PHP开发,助你从零基础到掌握主流开发语言。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师