我将用户编辑的网页保存在我们的应用后端
在js中:encodeURIComponent返回此
%3C!--%20saved%20from%20url%3D(0077)https%3A%2F%2Fwww.w3schools.com%2Fw3css%2Ftryw3css_templates_gourmet_catering.htm%23about
在php中:urldecode返回此值
<!-- saved from url=(0077)https:\/\/www.w3schools.com\/w3css\/tryw3css_templates_gourmet_catering.htm#about
到目前为止一切都很好。...
现在,当我从数据库获取数据并在php urlencode中对其重新编码时,返回此信息:
%3C%21--+saved+from+url%3D%280077%29https%3A%2F%2Fwww.w3schools.com%2Fw3css%2Ftryw3css_templates_gourmet_catering.htm%23about
因此它最终在JS beeing中被+解码:
<!--+saved+from+url=(0077)https://www.w3schools.com/w3css/tryw3css_templates_gourmet_catering.htm#about
1-是的,我可以替换+,但是我感觉自己做错了
2-为什么encodeurl如果与js encodedecodecomponent不兼容,那么会这样做吗?
致谢
答案 0 :(得分:-1)
$ string ='%3C!-%20saved%20from%20url%3D(0077)https%3A%2F%2Fwww.w3schools.com%2Fw3css%2Ftryw3css_templates_gourmet_catering.htm%23about';
$ string = str_replace('','-',$ string); //用连字符替换所有空格。
echo preg_replace('/ [^ A-Za-z0-9-] /','',$ string);