{"id":1120,"date":"2009-02-02T14:04:09","date_gmt":"2009-02-02T02:04:09","guid":{"rendered":""},"modified":"2009-02-02T14:04:09","modified_gmt":"2009-02-02T02:04:09","slug":"","status":"publish","type":"post","link":"https:\/\/www.mudone.com\/?p=1120","title":{"rendered":"php_url_encode"},"content":{"rendered":"<p>\u6700\u8fd1\u51e0\u5929\u5728\u6298\u817e\u7f51\u7ad9\u7684url\u89c4\u8303\u5316\u7684\u95ee\u9898\u3002<\/p>\n<p>\u5bf9urlencode\u51fd\u6570\u6bd4\u8f83\u597d\u5947\uff0c\u6252\u51faC\u4ee3\u7801\u6765\u770b\u4e86\u4e00\u4e0b\u3002\u539f\u6765\u662f16\u8fdb\u5236\u7684\u4e1c\u4e1c\u3002<\/p>\n<p>Ascii Table : http:\/\/www.asciitable.com\/<\/p>\n<div class=\"codeText\">\n<div class=\"codeHead\">C\u4ee3\u7801 (\u53d6\u81eaphp-5.2.6\/ext\/standard\/url.c 430-489\u884c)<\/div>\n<ol start=\"1\" class=\"dp-cpp\">\n<li class=\"alt\"><span><span class=\"comment\">\/*&nbsp;rfc1738:<\/span>&nbsp;<\/span><\/li>\n<li class=\"\"><span>&nbsp;<\/span><\/li>\n<li class=\"alt\"><span><span class=\"comment\">&nbsp;&nbsp;&nbsp;&#8230;The&nbsp;characters&nbsp;&quot;;&quot;,<\/span>&nbsp;<\/span><\/li>\n<li class=\"\"><span><span class=\"comment\">&nbsp;&nbsp;&nbsp;&quot;\/&quot;,&nbsp;&quot;?&quot;,&nbsp;&quot;:&quot;,&nbsp;&quot;@&quot;,&nbsp;&quot;=&quot;&nbsp;and&nbsp;&quot;&amp;&quot;&nbsp;are&nbsp;the&nbsp;characters&nbsp;which&nbsp;may&nbsp;be<\/span>&nbsp;<\/span><\/li>\n<li class=\"alt\"><span><span class=\"comment\">&nbsp;&nbsp;&nbsp;reserved&nbsp;for&nbsp;special&nbsp;meaning&nbsp;within&nbsp;a&nbsp;scheme&#8230;<\/span>&nbsp;<\/span><\/li>\n<li class=\"\"><span>&nbsp;<\/span><\/li>\n<li class=\"alt\"><span><span class=\"comment\">&nbsp;&nbsp;&nbsp;&#8230;Thus,&nbsp;only&nbsp;alphanumerics,&nbsp;the&nbsp;special&nbsp;characters&nbsp;&quot;$-_.+!*'(),&quot;,&nbsp;and<\/span>&nbsp;<\/span><\/li>\n<li class=\"\"><span><span class=\"comment\">&nbsp;&nbsp;&nbsp;reserved&nbsp;characters&nbsp;used&nbsp;for&nbsp;their&nbsp;reserved&nbsp;purposes&nbsp;may&nbsp;be&nbsp;used<\/span>&nbsp;<\/span><\/li>\n<li class=\"alt\"><span><span class=\"comment\">&nbsp;&nbsp;&nbsp;unencoded&nbsp;within&nbsp;a&nbsp;URL&#8230;<\/span>&nbsp;<\/span><\/li>\n<li class=\"\"><span>&nbsp;<\/span><\/li>\n<li class=\"alt\"><span><span class=\"comment\">&nbsp;&nbsp;&nbsp;For&nbsp;added&nbsp;safety,&nbsp;we&nbsp;only&nbsp;leave&nbsp;-_.&nbsp;unencoded.<\/span>&nbsp;<\/span><\/li>\n<li class=\"\"><span><span class=\"comment\">&nbsp;*\/<\/span><span>&nbsp;&nbsp;<\/span><\/span><\/li>\n<li class=\"alt\"><span>&nbsp;&nbsp;<\/span><\/li>\n<li class=\"\"><span><span class=\"keyword\">static<\/span><span>&nbsp;unsigned&nbsp;<\/span><span class=\"datatypes\">char<\/span><span>&nbsp;hexchars[]&nbsp;=&nbsp;<\/span><span class=\"string\">&quot;0123456789ABCDEF&quot;<\/span><span>;&nbsp;&nbsp;<\/span><\/span><\/li>\n<li class=\"alt\"><span>&nbsp;&nbsp;<\/span><\/li>\n<li class=\"\"><span><span class=\"comment\">\/*&nbsp;{{{&nbsp;php_url_encode<\/span>&nbsp;<\/span><\/li>\n<li class=\"alt\"><span><span class=\"comment\">&nbsp;*\/<\/span><span>&nbsp;&nbsp;<\/span><\/span><\/li>\n<li class=\"\"><span>PHPAPI&nbsp;<span class=\"datatypes\">char<\/span><span>&nbsp;*php_url_encode(<\/span><span class=\"datatypes\">char<\/span><span>&nbsp;<\/span><span class=\"keyword\">const<\/span><span>&nbsp;*s,&nbsp;<\/span><span class=\"datatypes\">int<\/span><span>&nbsp;len,&nbsp;<\/span><span class=\"datatypes\">int<\/span><span>&nbsp;*new_length)&nbsp;&nbsp;<\/span><\/span><\/li>\n<li class=\"alt\"><span>{&nbsp;&nbsp;<\/span><\/li>\n<li class=\"\"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"keyword\">register<\/span><span>&nbsp;unsigned&nbsp;<\/span><span class=\"datatypes\">char<\/span><span>&nbsp;c;&nbsp;&nbsp;<\/span><\/span><\/li>\n<li class=\"alt\"><span>&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span class=\"datatypes\">char<\/span><span>&nbsp;*to,&nbsp;*start;&nbsp;&nbsp;<\/span><\/span><\/li>\n<li class=\"\"><span>&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span class=\"datatypes\">char<\/span><span>&nbsp;<\/span><span class=\"keyword\">const<\/span><span>&nbsp;*from,&nbsp;*end;&nbsp;&nbsp;<\/span><\/span><\/li>\n<li class=\"alt\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><\/li>\n<li class=\"\"><span>&nbsp;&nbsp;&nbsp;&nbsp;from&nbsp;=&nbsp;s;&nbsp;&nbsp;<\/span><\/li>\n<li class=\"alt\"><span>&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;=&nbsp;s&nbsp;+&nbsp;len;&nbsp;&nbsp;<\/span><\/li>\n<li class=\"\"><span>&nbsp;&nbsp;&nbsp;&nbsp;start&nbsp;=&nbsp;to&nbsp;=&nbsp;(unsigned&nbsp;<span class=\"datatypes\">char<\/span><span>&nbsp;*)&nbsp;safe_emalloc(3,&nbsp;len,&nbsp;1);&nbsp;&nbsp;<\/span><\/span><\/li>\n<li class=\"alt\"><span>&nbsp;&nbsp;<\/span><\/li>\n<li class=\"\"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"keyword\">while<\/span><span>&nbsp;(from&nbsp;&lt;&nbsp;end)&nbsp;{&nbsp;&nbsp;<\/span><\/span><\/li>\n<li class=\"alt\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;=&nbsp;*from++;&nbsp;&nbsp;<\/span><\/li>\n<li class=\"\"><span>&nbsp;&nbsp;<\/span><\/li>\n<li class=\"alt\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"keyword\">if<\/span><span>&nbsp;(c&nbsp;==&nbsp;&#8216;&nbsp;<\/span><span class=\"string\">&#8216;)&nbsp;{<\/span>&nbsp;<\/span><\/li>\n<li class=\"\"><span><span class=\"string\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*to++&nbsp;=&nbsp;&#8216;<\/span><span>+<\/span><span class=\"string\">&#8216;;<\/span>&nbsp;<\/span><\/li>\n<li class=\"alt\"><span><span class=\"string\">#ifndef&nbsp;CHARSET_EBCDIC<\/span>&nbsp;<\/span><\/li>\n<li class=\"\"><span><span class=\"string\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;((c&nbsp;&lt;&nbsp;&#8216;<\/span><span>0<\/span><span class=\"string\">&#8216;&nbsp;&amp;&amp;&nbsp;c&nbsp;!=&nbsp;&#8216;<\/span><span>&#8211;<\/span><span class=\"string\">&#8216;&nbsp;&amp;&amp;&nbsp;c&nbsp;!=&nbsp;&#8216;<\/span><span>.<\/span><span class=\"string\">&#8216;)&nbsp;||<\/span>&nbsp;<\/span><\/li>\n<li class=\"alt\"><span><span class=\"string\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(c&nbsp;&lt;&nbsp;&#8216;<\/span><span>A<\/span><span class=\"string\">&#8216;&nbsp;&amp;&amp;&nbsp;c&nbsp;&gt;&nbsp;&#8216;<\/span><span>9<\/span><span class=\"string\">&#8216;)&nbsp;||<\/span>&nbsp;<\/span><\/li>\n<li class=\"\"><span><span class=\"string\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(c&nbsp;&gt;&nbsp;&#8216;<\/span><span>Z<\/span><span class=\"string\">&#8216;&nbsp;&amp;&amp;&nbsp;c&nbsp;&lt;&nbsp;&#8216;<\/span><span>a<\/span><span class=\"string\">&#8216;&nbsp;&amp;&amp;&nbsp;c&nbsp;!=&nbsp;&#8216;<\/span><span>_<\/span><span class=\"string\">&#8216;)&nbsp;||<\/span>&nbsp;<\/span><\/li>\n<li class=\"alt\"><span><span class=\"string\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(c&nbsp;&gt;&nbsp;&#8216;<\/span><span>z<\/span><span class=\"string\">&#8216;))&nbsp;{&nbsp;&nbsp;<\/span><\/span><\/li>\n<li class=\"\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to[0]&nbsp;=&nbsp;&#8216;<span>%<\/span><span class=\"string\">&#8216;;<\/span>&nbsp;<\/span><\/li>\n<li class=\"alt\"><span><span class=\"string\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to[1]&nbsp;=&nbsp;hexchars[c&nbsp;&gt;&gt;&nbsp;4];<\/span>&nbsp;<\/span><\/li>\n<li class=\"\"><span><span class=\"string\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to[2]&nbsp;=&nbsp;hexchars[c&nbsp;&amp;&nbsp;15];<\/span>&nbsp;<\/span><\/li>\n<li class=\"alt\"><span><span class=\"string\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;+=&nbsp;3;<\/span>&nbsp;<\/span><\/li>\n<li class=\"\"><span><span class=\"string\">#else&nbsp;\/*CHARSET_EBCDIC*\/<\/span>&nbsp;<\/span><\/li>\n<li class=\"alt\"><span><span class=\"string\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(!isalnum(c)&nbsp;&amp;&amp;&nbsp;strchr(&quot;_-.&quot;,&nbsp;c)&nbsp;==&nbsp;NULL)&nbsp;{<\/span>&nbsp;<\/span><\/li>\n<li class=\"\"><span><span class=\"string\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/*&nbsp;Allow&nbsp;only&nbsp;alphanumeric&nbsp;chars&nbsp;and&nbsp;&#8216;<\/span><span>_<\/span><span class=\"string\">&#8216;,&nbsp;&#8216;<\/span><span>&#8211;<\/span><span class=\"string\">&#8216;,&nbsp;&#8216;<\/span><span>.<\/span><span class=\"string\">&#8216;;&nbsp;escape&nbsp;the&nbsp;rest&nbsp;*\/<\/span>&nbsp;<\/span><\/li>\n<li class=\"alt\"><span><span class=\"string\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to[0]&nbsp;=&nbsp;&#8216;<\/span><span>%&#8217;;&nbsp;&nbsp;<\/span><\/span><\/li>\n<li class=\"\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to[1]&nbsp;=&nbsp;hexchars[os_toascii[c]&nbsp;&gt;&gt;&nbsp;4];&nbsp;&nbsp;<\/span><\/li>\n<li class=\"alt\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to[2]&nbsp;=&nbsp;hexchars[os_toascii[c]&nbsp;&amp;&nbsp;15];&nbsp;&nbsp;<\/span><\/li>\n<li class=\"\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;+=&nbsp;3;&nbsp;&nbsp;<\/span><\/li>\n<li class=\"alt\"><span><span class=\"preprocessor\">#endif&nbsp;\/*CHARSET_EBCDIC*\/<\/span><span>&nbsp;&nbsp;<\/span><\/span><\/li>\n<li class=\"\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span class=\"keyword\">else<\/span><span>&nbsp;{&nbsp;&nbsp;<\/span><\/span><\/li>\n<li class=\"alt\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*to++&nbsp;=&nbsp;c;&nbsp;&nbsp;<\/span><\/li>\n<li class=\"\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<\/span><\/li>\n<li class=\"alt\"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<\/span><\/li>\n<li class=\"\"><span>&nbsp;&nbsp;&nbsp;&nbsp;*to&nbsp;=&nbsp;0;&nbsp;&nbsp;<\/span><\/li>\n<li class=\"alt\"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"keyword\">if<\/span><span>&nbsp;(new_length)&nbsp;{&nbsp;&nbsp;<\/span><\/span><\/li>\n<li class=\"\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*new_length&nbsp;=&nbsp;to&nbsp;&#8211;&nbsp;start;&nbsp;&nbsp;<\/span><\/li>\n<li class=\"alt\"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<\/span><\/li>\n<li class=\"\"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"keyword\">return<\/span><span>&nbsp;(<\/span><span class=\"datatypes\">char<\/span><span>&nbsp;*)&nbsp;start;&nbsp;&nbsp;<\/span><\/span><\/li>\n<li class=\"alt\"><span>}&nbsp;&nbsp;<\/span><\/li>\n<li class=\"\"><span><span class=\"comment\">\/*&nbsp;}}}&nbsp;*\/<\/span><span>&nbsp;&nbsp;<\/span><\/span><\/li>\n<\/ol>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u6700\u8fd1\u51e0\u5929\u5728\u6298\u817e\u7f51\u7ad9\u7684url\u89c4\u8303\u5316\u7684\u95ee\u9898\u3002 \u5bf9urlencode\u51fd\u6570\u6bd4\u8f83\u597d\u5947\uff0c\u6252\u51faC\u4ee3\u7801\u6765\u770b\u4e86\u4e00\u4e0b\u3002\u539f\u6765\u662f16\u8fdb [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","footnotes":""},"categories":[],"tags":[],"class_list":["post-1120","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/www.mudone.com\/index.php?rest_route=\/wp\/v2\/posts\/1120","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mudone.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mudone.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mudone.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mudone.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1120"}],"version-history":[{"count":0,"href":"https:\/\/www.mudone.com\/index.php?rest_route=\/wp\/v2\/posts\/1120\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.mudone.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1120"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mudone.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1120"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mudone.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}