首頁  >  文章  >  後端開發  >  把一个数组写入配置文件,&符号为什么变成了&

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

WBOY
WBOY原創
2016-06-20 12:54:371263瀏覽

$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;
array (  'a' => '&abc',)

可能写入前你的数组中的&就是实体了。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() 用这个方法转回去。
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn