encodeURIComponent与rawurlencode主要区别在于单引号的处理:
JS的encodeURIComponent保留单引号不编码PHP的rawurlencode会将单引号编码为%27
我们自定义js端的encodeURIComponent:
// 前端使用自定义编码函数
function phpUrlencode(str) {
return encodeURIComponent(str)
.replace(/'/g, '%27') // 单引号转换为%27
.replace(/!/g, '%21')
.replace(/\(/g, '%28')
.replace(/\)/g, '%29')
.replace(/\*/g, '%2A');
}完整的js与php代码一样的对比:<?php
$string="s'f'd双方都()是对方是否";
?>
<script>
const param = phpUrlencode("<?=$string?>");
console.log(param);
// 前端使用自定义编码函数
function phpUrlencode(str) {
return encodeURIComponent(str)
.replace(/'/g, '%27') // 单引号转换为%27
.replace(/!/g, '%21')
.replace(/\(/g, '%28')
.replace(/\)/g, '%29')
.replace(/\*/g, '%2A');
}
</script>
<?php
// PHP代码
$param = rawurlencode($string);
echo $param; 网友回复


