那天请教HBr搞flash画板,出现了getURL传出的变量里有特殊字符在php接变量输出出现丢失.比如:输出一个xml文件里带引号,到php里引号不见了.
Code:
变成:
Code:
做法1:
只需要在flash里用escape把lines.toString()字符串转换为以URL编码格式进行编码,将所有非字母数字的字符都转义为十六进制序列字符串。
Code:
var lines = new XML(" ...... save.onRelease=function(){ contents=escape(lines.toString()); trace(contents); getURL("http://localhost/php/myapp/flash/huaban/savefile.php?filename="+filename+"&contents="+contents) } |
然后在php里用stripslashes去掉反斜线(因为php自动将传过来的十六进制字符转成了ASCII字符并加入了反斜线,所以我们只要去掉就行)
Code:
$contents=$_GET[contents]; header("content-type:text/xml"); header("Expires:-1"); echo stripslashes($contents); ?> |
做法2:
在flash里尽量不输出有特殊字符的字符串,比如本例可在flash里改造xml成如下格式的,然后在php里加上
Code:
| echo ""; |
输出xml声明。
Code:
不过这种格式会大大加大xml文件,本人觉得不可取。



