欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-06-01 22:26:03
...
$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() 用这个方法转回去。