把一个数组写入配置文件,&符号为什么变成了&
程序员文章站
2023-12-27 23:54:51
...
$config_arr = var_export($configdata,true);
$config_txt = " file_put_contents( 'config.ini.php', $config_txt);
$config_arr是一个数组,数组值中有&符号,把它写入到config.ini.php后,&符号变成了&
有办法让它不变吗?
标记
echo '';
print_r($config_arr);
stripslashes() 用这个方法转回去。
$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 方式下的显示结果
你 右键--查看源文件 才能看到真实的数据
或者在打印前先输出
echo '
print_r($config_arr);
这个问题解决了,是接收参数的时候进行字符转义了
现在还有个问题:
configdata数组中有字符反斜杠 \ ,经过这一句后
$config_arr = var_export($configdata,true);
写入到配置文件中后反斜杠变成了\\ 怎么解决
stripslashes() 用这个方法转回去。