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

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等相互转换显示的时候的问题:


无标题文档