PHP 7.0-urlencode / urldecode不对称

时间:2018-07-09 10:07:22

标签: php urlencode

我将用户编辑的网页保存在我们的应用后端

在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不兼容,那么会这样做吗?

致谢

1 个答案:

答案 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);