把一个数组写入配置文件,&符号为什么变成了&

WBOY
Release: 2016-06-20 12:54:37
Original
1267 people have browsed it

$config_arr = var_export($configdata,true);
$config_txt = " file_put_contents( 'config.ini.php', $config_txt);


$config_arr是一个数组,数组值中有&符号,把它写入到config.ini.php后,&符号变成了&

有办法让它不变吗?


回复讨论(解决方案)

这是不可能的,应该是你一开始就做了 html 转义

$a = array('a' => '&abc');$s =  var_export($a, 1);echo $s;
Copy after login
array (  'a' => '&abc',)
Copy after login

可能写入前你的数组中的&就是实体了。print_r($configdata); 在源码下看一下就知道了。

你在之前已经转义了。

可以用htmlspecialchars_decode转回来。
http://php.net/manual/en/function.htmlspecialchars-decode.php

写入之前我用print_r输出的结果是这样:


写入文件后的结果是这样:


这是源代码:

写入前没有进行html转换啊

这是源代码

打印出来后,浏览器中查看源码才能知道有没有转换。

这个问题解决了,是接收参数的时候进行字符转义了
现在还有个问题:
configdata数组中有字符反斜杠 \ ,经过这一句后
$config_arr = var_export($configdata,true);

写入到配置文件中后反斜杠变成了\\ 怎么解决

#4 的图一是在 html 方式下的显示结果
你 右键--查看源文件 才能看到真实的数据
或者在打印前先输出 

 标记 <br> echo '<xmp>'; <br> print_r($config_arr); <p class="sougouAnswer"> </p> <p class="yy"> 这个问题解决了,是接收参数的时候进行字符转义了 <br> 现在还有个问题: <br> configdata数组中有字符反斜杠 \ ,经过这一句后 <br> $config_arr = var_export($configdata,true); <br> <br> 写入到配置文件中后反斜杠变成了\\ 怎么解决 </p> <br> <br> stripslashes() 用这个方法转回去。
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template