js + php 处理 永远的敌人 特殊符号 1 在网页上的显示问题
程序员文章站
2022-06-10 12:59:13
...
php传给js,然后js将数据显示在网页上,如果存在特殊字符如:' 半角单引号, 半角双引号,或者和html实体符号相关的 amp; 就会出现各种显示上的问题 php部分先将这些特殊的字符转义 ?phpfunction arrayRecursive($array){ foreach ($array as $key = $value)
php传值给js,然后js将数据显示在网页上,如果存在特殊字符如:' 半角单引号," 半角双引号,或者和html实体符号相关的 & 就会出现各种显示上的问题
php部分先将这些特殊的字符转义
$value) {
if (is_array($value)) {
arrayRecursive($array[$key]);//如果是数组就进行递归操作
} else {
if(is_string($value)){
$temp1= addslashes($value);
$array[$key]= urlencode($temp1);//如果是字符串就urlencode
}else{
$array[$key] = $value;
}
}
}
}
function JSON($result) {
$array=$result;
arrayRecursive($array);//先将类型为字符串的数据进行 urlencode
$json = json_encode($array);//再将数组转成JSON
return urldecode($json);//最后将JSON字符串进行urldecode
}
$data = '"+123+'."'+&+"++&123";
// $data = '';
$arr_data = Array(
'data' => Array(
'1'=>$data,
'2'=>$data,
'3'=> Array(
'123'=>'123',
'123'=>'123',
'123'=>'123'
)
)
);
function arrayRecursive2(&$array){
$search = array (
"'&'i",//转换and符号
"'\"'i",//转换半角双引号
"'\''i",//转换半角单引号
"''i"//转换大于号
);
$replace = array (
"&",
""",
"'",
"<",
">"
);
foreach ($array as $key => $value) {
if (is_array($value)) {
arrayRecursive2($array[$key]);//如果是数组就进行递归操作
} else {
if(is_string($value)){
$array[$key] = preg_replace($search, $replace, $value);
}else{
$array[$key] = $value;
}
}
}
}
function replace_html_entity($result){
$origin = $result;
arrayRecursive2($origin);
return $origin;
}
$encode_array = replace_html_entity($arr_data);
echo JSON($encode_array);
?>
接着是js接受和html显示,以及div,span,input,textarea等相互转换显示的时候的问题:
无标题文档