问题背景:
本人使用某企业CMS的PHP源码,PHP版本为5.3,基于宝塔面板来一键安装的.
该企业CMS源码其中有采集功能,而采集功能需要根据html标签和属性等等作为标识符,而html中属性就以双引号作为属性值的标识符.
问题就在于,本人点击了保存采集规则后开始采集,发现采集失败
重新打开之前保存了的采集规则的设置页面,发现采集规则中的双引号被转义为斜杠,故而导致采集器无法匹配到指定内容.
原因:
起初,我以为是设置问题,或者是源码本身有问题,因此依照这个推断进行了修改,但无一例外,双引号都会被自动转义为斜杠.
这时我根据java开发时所遇到的问题举一反三,java中有时也会出现自动转义的机制.那么,是不是并非源码本身的问题,而是该源码所基于的php有问题?
于是我百度了下,发现php.ini文件中可以设置自动转义,并且默认是开启的.
而我所保存的采集规则,在经过前端点击了’保存采集规则’进而被php处理时,发生了转义现象.
解决:编辑php.ini文件,搜索magic_quotes_gpc这一个设置,将从On改为Off这里我是用宝塔面板去修改的.
参考:https://www.jb51.net/article/15943.htm
前者方法昨晚试过了,不管用.后来今天参考这个文章
https://blog.csdn.net/weixin_43376075/article/details/107499861
进行修改,但还是不行.可文章中提及自动转义机制自PHP5.4版本废除,所以我安装了PHP5.5版本试了试.经过验证,php5.5版本可以解决问题.