序列化数组PHP中的新行

时间:2012-02-22 19:13:34

标签: php

从HTML表单中获取数据并在序列化数组中存储值时,如果有新行,则mysql_real_escape_string序列化出错。

例如,这会输出一个错误长度的字符串以及新行已删除

$value="new\r\nline";

mysql_real_escape_string($value);


$array=array();
$array[0]=$value;

$array=serialize($array);

echo $array;

打印出a:1:{i:0;s:9:"new line";}

3 个答案:

答案 0 :(得分:1)

mysql_real_escape_string返回转义值..您不使用返回的值,那么为什么要抱怨它?

另外,如果您在浏览器中检查输出,则不会看到换行符。检查生成的源。

答案 1 :(得分:1)

如果您在浏览器中查看此内容,则会删除换行符。查看页面源代码,或将其包装在<pre>标记中:

echo "<pre>$array</pre>";

答案 2 :(得分:0)

作为建议,您可以在序列化之前在基础64中编码来自HTML表单的序列化结果,以避免错误并使其安全。

$encodedValue=base64_encode($value);

$array=array();
$array[0]=$encodedValue;

$array=serialize($array);

echo $array;

要解码您存储的值,只需执行相反的过程

$array=unserialize($array);
$value=base64_decode($array[0]);
echo $value;

HMTL表格值保持不变。顺便说一下,在base 64中进行编码,可以安全地将值存储在BD中,但要高出33%。