我需要用url有效的url替换url无效字符,然后再将其转换回来。
这是针对搜索页面,其中包含http://my.site/search/this-is-a-search等网址,搜索表单为POSTS,然后用户重定向到新网址。
Php具有urlencode和urldecode函数,但这些函数根本不起作用,并在我的url中留下无效字符。
当然,我不需要在这里重新发明轮子。
答案 0 :(得分:3)
对于http://my.site/search/this-is-a-search
之类的内容(例如,在查询字符串之外),您应该使用rawurlencode
和rawurldecode
。这些保证是URL安全的。
但是,urlencode
也永远不会生成不安全的URL路径,因为唯一的区别是空格的编码方式和urlencode
将空格编码为+
,这在URL路径中是允许的
来自RFC 1738:
httpurl = "http://" hostport [ "/" hpath [ "?" search ]] hpath = hsegment *[ "/" hsegment ] hsegment = *[ uchar | ";" | ":" | "@" | "&" | "=" ] uchar = unreserved | escape unreserved = alpha | digit | safe | extra safe = "$" | "-" | "_" | "." | "+"
答案 1 :(得分:1)
rawurlencode()
怎么样。
http://www.php.net/manual/en/function.rawurlencode.php
echo rawurlencode('http://my.site/search/this-is-a-search');
// http%3A%2F%2Fmy.site%2Fsearch%2Fthis-is-a-search