Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:51217 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 66380 invoked from network); 5 Jan 2011 12:09:12 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 5 Jan 2011 12:09:12 -0000 Authentication-Results: pb1.pair.com smtp.mail=rui_hirokawa@yahoo.co.jp; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=rui_hirokawa@yahoo.co.jp; sender-id=pass; domainkeys=good Received-SPF: pass (pb1.pair.com: domain yahoo.co.jp designates 114.111.99.162 as permitted sender) DomainKey-Status: good X-DomainKeys: Ecelerity dk_validate implementing draft-delany-domainkeys-base-01 X-PHP-List-Original-Sender: rui_hirokawa@yahoo.co.jp X-Host-Fingerprint: 114.111.99.162 smtp501.mail.kks.yahoo.co.jp Received: from [114.111.99.162] ([114.111.99.162:26306] helo=smtp501.mail.kks.yahoo.co.jp) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 9F/D3-32752-46F542D4 for ; Wed, 05 Jan 2011 07:09:11 -0500 Received: (qmail 96550 invoked by alias); 5 Jan 2011 12:09:05 -0000 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=yj20050223; d=yahoo.co.jp; h=Received:X-Apparently-From:Message-ID:Date:From:User-Agent:MIME-Version:To:Subject:Content-Type; b=iz8EBdQFOJ00sL/9NiwrCQB0tBt2UEKYtIENpn6/1/+6zt7CkVxcPRc4HUDOGBZN5kWq2yBv0Nz3IKSn12bVoBHgO3a3hZcH1M1SU7z1HRDbovPoFq4YiYaQ1mTrj3RA ; Received: from unknown (HELO ?192.168.1.3?) (rui_hirokawa@110.233.141.192 with plain) by smtp501.mail.kks.yahoo.co.jp with SMTP; 5 Jan 2011 12:09:05 -0000 X-Apparently-From: Message-ID: <4D245F5B.3050707@yahoo.co.jp> Date: Wed, 05 Jan 2011 21:08:59 +0900 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.2.13) Gecko/20101207 Thunderbird/3.1.7 MIME-Version: 1.0 To: internals@lists.php.net Content-Type: multipart/mixed; boundary="------------050904060804000408010403" Subject: [PATCH] adding RFC3984 support to http_build_query From: rui_hirokawa@yahoo.co.jp (Rui Hirokawa) --------------050904060804000408010403 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit Hello, I made a patch to add the RFC-3984 based url-encoding support into http_build_query(). The http_build_query() is quite useful, but, it isn't based on the official url-encoding scheme (RFC-3984) for ~ (tilde) and ' '(space). I added an optional (the 4th) parameter 'is_rfc3984'. If it is true (false by default, now), RFC3984 based url-encoding scheme (it is same as rawurlencode() ) is used. A simple example shown as bellow, $v = array('foo'=>'m o','boo'=>'[^~]'); // result: foo=m+p&boo=%5B%5E%7E5D echo http_build_query($v, null, '&'); // result: foo=m%20p&boo=%5B%5E~5D (RFC-3986 compatible) echo http_build_query($v, null, '&', true); // result: foo=m%20p&boo=%5B%5E~5D (RFC-3986 compatible) echo rawurlencode($v['foo']).'&'.rawurlencode($v['boo']); I'm going to commit the patch if it is accepted. Rui --------------050904060804000408010403 Content-Type: text/plain; name="http_build_query-rfc3984.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="http_build_query-rfc3984.patch" SW5kZXg6IGV4dC9zdGFuZGFyZC9iYXNpY19mdW5jdGlvbnMuYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBleHQvc3RhbmRhcmQvYmFzaWNfZnVuY3Rpb25zLmMJKHJldmlzaW9uIDMwNzExMikKKysr IGV4dC9zdGFuZGFyZC9iYXNpY19mdW5jdGlvbnMuYwkod29ya2luZyBjb3B5KQpAQCAtMTUx Myw2ICsxNTEzLDcgQEAKIAlaRU5EX0FSR19JTkZPKDAsIGZvcm1kYXRhKQogCVpFTkRfQVJH X0lORk8oMCwgcHJlZml4KQogCVpFTkRfQVJHX0lORk8oMCwgYXJnX3NlcGFyYXRvcikKKwla RU5EX0FSR19JTkZPKDAsIGlzX3JmYzM5ODYpCiBaRU5EX0VORF9BUkdfSU5GTygpCiAvKiB9 fX0gKi8KIC8qIHt7eyBpbWFnZS5jICovCkluZGV4OiBleHQvc3RhbmRhcmQvcGhwX2h0dHAu aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBleHQvc3RhbmRhcmQvcGhwX2h0dHAuaAkocmV2aXNpb24g MzA3MTEyKQorKysgZXh0L3N0YW5kYXJkL3BocF9odHRwLmgJKHdvcmtpbmcgY29weSkKQEAg LTI4LDcgKzI4LDcgQEAKIAkJCQljb25zdCBjaGFyICpudW1fcHJlZml4LCBpbnQgbnVtX3By ZWZpeF9sZW4sCiAJCQkJY29uc3QgY2hhciAqa2V5X3ByZWZpeCwgaW50IGtleV9wcmVmaXhf bGVuLAogCQkJCWNvbnN0IGNoYXIgKmtleV9zdWZmaXgsIGludCBrZXlfc3VmZml4X2xlbiwg Ci0JCQkJenZhbCAqdHlwZSwgY2hhciAqYXJnX3NlcCBUU1JNTFNfREMpOworCQkJCXp2YWwg KnR5cGUsIGNoYXIgKmFyZ19zZXAsIGludCBpc19yZmMzOTg2IFRTUk1MU19EQyk7CiAjZGVm aW5lIHBocF91cmxfZW5jb2RlX2hhc2goaHQsIGZvcm1zdHIpCXBocF91cmxfZW5jb2RlX2hh c2hfZXgoKGh0KSwgKGZvcm1zdHIpLCBOVUxMLCAwLCBOVUxMLCAwLCBOVUxMLCAwLCBOVUxM IFRTUk1MU19DQykKIAogUEhQX0ZVTkNUSU9OKGh0dHBfYnVpbGRfcXVlcnkpOwpJbmRleDog ZXh0L3N0YW5kYXJkL2h0dHAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBleHQvc3RhbmRhcmQvaHR0 cC5jCShyZXZpc2lvbiAzMDcxMTIpCisrKyBleHQvc3RhbmRhcmQvaHR0cC5jCSh3b3JraW5n IGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAJCQkJY29uc3QgY2hhciAqbnVtX3ByZWZpeCwg aW50IG51bV9wcmVmaXhfbGVuLAogCQkJCWNvbnN0IGNoYXIgKmtleV9wcmVmaXgsIGludCBr ZXlfcHJlZml4X2xlbiwKIAkJCQljb25zdCBjaGFyICprZXlfc3VmZml4LCBpbnQga2V5X3N1 ZmZpeF9sZW4sCi0JCQkJenZhbCAqdHlwZSwgY2hhciAqYXJnX3NlcCBUU1JNTFNfREMpCisJ CQkgIHp2YWwgKnR5cGUsIGNoYXIgKmFyZ19zZXAsIGludCBpc19yZmMzOTg2IFRTUk1MU19E QykKIHsKIAljaGFyICprZXkgPSBOVUxMLCAqZWtleSwgKm5ld3ByZWZpeCwgKnA7CiAJaW50 IGFyZ19zZXBfbGVuLCBrZXlfbGVuLCBla2V5X2xlbiwga2V5X3R5cGUsIG5ld3ByZWZpeF9s ZW47CkBAIC04MSw3ICs4MSwxMSBAQAogCQl9CiAJCWlmIChaX1RZUEVfUFAoemRhdGEpID09 IElTX0FSUkFZIHx8IFpfVFlQRV9QUCh6ZGF0YSkgPT0gSVNfT0JKRUNUKSB7CiAJCQlpZiAo a2V5X3R5cGUgPT0gSEFTSF9LRVlfSVNfU1RSSU5HKSB7Ci0JCQkJZWtleSA9IHBocF91cmxf ZW5jb2RlKGtleSwga2V5X2xlbiwgJmVrZXlfbGVuKTsKKwkJCQlpZiAoaXNfcmZjMzk4Nikg eworCQkJCQlla2V5ID0gcGhwX3Jhd191cmxfZW5jb2RlKGtleSwga2V5X2xlbiwgJmVrZXlf bGVuKTsKKwkJCQl9IGVsc2UgeworCQkJCQlla2V5ID0gcGhwX3VybF9lbmNvZGUoa2V5LCBr ZXlfbGVuLCAmZWtleV9sZW4pOworCQkJCX0KIAkJCQluZXdwcmVmaXhfbGVuID0ga2V5X3N1 ZmZpeF9sZW4gKyBla2V5X2xlbiArIGtleV9wcmVmaXhfbGVuICsgMyAvKiAlNUIgKi87CiAJ CQkJbmV3cHJlZml4ID0gZW1hbGxvYyhuZXdwcmVmaXhfbGVuICsgMSk7CiAJCQkJcCA9IG5l d3ByZWZpeDsKQEAgLTEzMiw3ICsxMzYsNyBAQAogCQkJCSpwID0gJ1wwJzsKIAkJCX0KIAkJ CWh0LT5uQXBwbHlDb3VudCsrOwotCQkJcGhwX3VybF9lbmNvZGVfaGFzaF9leChIQVNIX09G KCp6ZGF0YSksIGZvcm1zdHIsIE5VTEwsIDAsIG5ld3ByZWZpeCwgbmV3cHJlZml4X2xlbiwg IiU1RCIsIDMsIChaX1RZUEVfUFAoemRhdGEpID09IElTX09CSkVDVCA/ICp6ZGF0YSA6IE5V TEwpLCBhcmdfc2VwIFRTUk1MU19DQyk7CisJCQlwaHBfdXJsX2VuY29kZV9oYXNoX2V4KEhB U0hfT0YoKnpkYXRhKSwgZm9ybXN0ciwgTlVMTCwgMCwgbmV3cHJlZml4LCBuZXdwcmVmaXhf bGVuLCAiJTVEIiwgMywgKFpfVFlQRV9QUCh6ZGF0YSkgPT0gSVNfT0JKRUNUID8gKnpkYXRh IDogTlVMTCksIGFyZ19zZXAsIGlzX3JmYzM5ODYgVFNSTUxTX0NDKTsKIAkJCWh0LT5uQXBw bHlDb3VudC0tOwogCQkJZWZyZWUobmV3cHJlZml4KTsKIAkJfSBlbHNlIGlmIChaX1RZUEVf UFAoemRhdGEpID09IElTX05VTEwgfHwgWl9UWVBFX1BQKHpkYXRhKSA9PSBJU19SRVNPVVJD RSkgewpAQCAtMTQ1LDcgKzE0OSwxMSBAQAogCQkJLyogU2ltcGxlIGtleT12YWx1ZSAqLwog CQkJc21hcnRfc3RyX2FwcGVuZGwoZm9ybXN0ciwga2V5X3ByZWZpeCwga2V5X3ByZWZpeF9s ZW4pOwogCQkJaWYgKGtleV90eXBlID09IEhBU0hfS0VZX0lTX1NUUklORykgewotCQkJCWVr ZXkgPSBwaHBfdXJsX2VuY29kZShrZXksIGtleV9sZW4sICZla2V5X2xlbik7CisJCQkJaWYg KGlzX3JmYzM5ODYpIHsKKwkJCQkJZWtleSA9IHBocF9yYXdfdXJsX2VuY29kZShrZXksIGtl eV9sZW4sICZla2V5X2xlbik7CisJCQkJfSBlbHNlIHsKKwkJCQkJZWtleSA9IHBocF91cmxf ZW5jb2RlKGtleSwga2V5X2xlbiwgJmVrZXlfbGVuKTsKKwkJCQl9CiAJCQkJc21hcnRfc3Ry X2FwcGVuZGwoZm9ybXN0ciwgZWtleSwgZWtleV9sZW4pOwogCQkJCWVmcmVlKGVrZXkpOwog CQkJfSBlbHNlIHsKQEAgLTE2MSw3ICsxNjksMTEgQEAKIAkJCXNtYXJ0X3N0cl9hcHBlbmRs KGZvcm1zdHIsICI9IiwgMSk7CiAJCQlzd2l0Y2ggKFpfVFlQRV9QUCh6ZGF0YSkpIHsKIAkJ CQljYXNlIElTX1NUUklORzoKLQkJCQkJZWtleSA9IHBocF91cmxfZW5jb2RlKFpfU1RSVkFM X1BQKHpkYXRhKSwgWl9TVFJMRU5fUFAoemRhdGEpLCAmZWtleV9sZW4pOworCQkJCQlpZiAo aXNfcmZjMzk4NikgeworCQkJCQkJZWtleSA9IHBocF9yYXdfdXJsX2VuY29kZShaX1NUUlZB TF9QUCh6ZGF0YSksIFpfU1RSTEVOX1BQKHpkYXRhKSwgJmVrZXlfbGVuKTsKKwkJCQkJfSBl bHNlIHsKKwkJCQkJCWVrZXkgPSBwaHBfdXJsX2VuY29kZShaX1NUUlZBTF9QUCh6ZGF0YSks IFpfU1RSTEVOX1BQKHpkYXRhKSwgJmVrZXlfbGVuKTsJCQkJCQkKKwkJCQkJfQogCQkJCQli cmVhazsKIAkJCQljYXNlIElTX0xPTkc6CiAJCQkJY2FzZSBJU19CT09MOgpAQCAtMTc2LDcg KzE4OCwxMSBAQAogCQkJCQkqY29weXp2YWwgPSAqKnpkYXRhOwogCQkJCQl6dmFsX2NvcHlf Y3Rvcihjb3B5enZhbCk7CiAJCQkJCWNvbnZlcnRfdG9fc3RyaW5nX2V4KCZjb3B5enZhbCk7 Ci0JCQkJCWVrZXkgPSBwaHBfdXJsX2VuY29kZShaX1NUUlZBTF9QKGNvcHl6dmFsKSwgWl9T VFJMRU5fUChjb3B5enZhbCksICZla2V5X2xlbik7CisJCQkJCWlmIChpc19yZmMzOTg2KSB7 CisJCQkJCQlla2V5ID0gcGhwX3Jhd191cmxfZW5jb2RlKFpfU1RSVkFMX1AoY29weXp2YWwp LCBaX1NUUkxFTl9QKGNvcHl6dmFsKSwgJmVrZXlfbGVuKTsKKwkJCQkJfSBlbHNlIHsKKwkJ CQkJCWVrZXkgPSBwaHBfdXJsX2VuY29kZShaX1NUUlZBTF9QKGNvcHl6dmFsKSwgWl9TVFJM RU5fUChjb3B5enZhbCksICZla2V5X2xlbik7CisJCQkJCX0KIAkJCQkJenZhbF9wdHJfZHRv cigmY29weXp2YWwpOwogCQkJfQogCQkJc21hcnRfc3RyX2FwcGVuZGwoZm9ybXN0ciwgZWtl eSwgZWtleV9sZW4pOwpAQCAtMTg4LDcgKzIwNCw3IEBACiB9CiAvKiB9fX0gKi8KIAotLyog e3t7IHByb3RvIHN0cmluZyBodHRwX2J1aWxkX3F1ZXJ5KG1peGVkIGZvcm1kYXRhIFssIHN0 cmluZyBwcmVmaXggWywgc3RyaW5nIGFyZ19zZXBhcmF0b3JdXSkKKy8qIHt7eyBwcm90byBz dHJpbmcgaHR0cF9idWlsZF9xdWVyeShtaXhlZCBmb3JtZGF0YSBbLCBzdHJpbmcgcHJlZml4 IFssIHN0cmluZyBhcmdfc2VwYXJhdG9yIFssIGJvb2wgaXNfcmZjMzk4Nl1dXSkKICAgIEdl bmVyYXRlcyBhIGZvcm0tZW5jb2RlZCBxdWVyeSBzdHJpbmcgZnJvbSBhbiBhc3NvY2lhdGl2 ZSBhcnJheSBvciBvYmplY3QuICovCiBQSFBfRlVOQ1RJT04oaHR0cF9idWlsZF9xdWVyeSkK IHsKQEAgLTE5Niw5ICsyMTIsOSBAQAogCWNoYXIgKnByZWZpeCA9IE5VTEwsICphcmdfc2Vw PU5VTEw7CiAJaW50IGFyZ19zZXBfbGVuID0gMCwgcHJlZml4X2xlbiA9IDA7CiAJc21hcnRf c3RyIGZvcm1zdHIgPSB7MH07Ci0JCisJbG9uZyBpc19yZmMzOTg2ID0gMDsKIAotCWlmICh6 ZW5kX3BhcnNlX3BhcmFtZXRlcnMoWkVORF9OVU1fQVJHUygpIFRTUk1MU19DQywgInp8c3Mi LCAmZm9ybWRhdGEsICZwcmVmaXgsICZwcmVmaXhfbGVuLCAmYXJnX3NlcCwgJmFyZ19zZXBf bGVuKSAhPSBTVUNDRVNTKSB7CisJaWYgKHplbmRfcGFyc2VfcGFyYW1ldGVycyhaRU5EX05V TV9BUkdTKCkgVFNSTUxTX0NDLCAienxzc2wiLCAmZm9ybWRhdGEsICZwcmVmaXgsICZwcmVm aXhfbGVuLCAmYXJnX3NlcCwgJmFyZ19zZXBfbGVuLCAmaXNfcmZjMzk4NikgIT0gU1VDQ0VT UykgewogCQlSRVRVUk5fRkFMU0U7CiAJfQogCkBAIC0yMDcsNyArMjIzLDcgQEAKIAkJUkVU VVJOX0ZBTFNFOwogCX0KIAotCWlmIChwaHBfdXJsX2VuY29kZV9oYXNoX2V4KEhBU0hfT0Yo Zm9ybWRhdGEpLCAmZm9ybXN0ciwgcHJlZml4LCBwcmVmaXhfbGVuLCBOVUxMLCAwLCBOVUxM LCAwLCAoWl9UWVBFX1AoZm9ybWRhdGEpID09IElTX09CSkVDVCA/IGZvcm1kYXRhIDogTlVM TCksIGFyZ19zZXAgVFNSTUxTX0NDKSA9PSBGQUlMVVJFKSB7CisJaWYgKHBocF91cmxfZW5j b2RlX2hhc2hfZXgoSEFTSF9PRihmb3JtZGF0YSksICZmb3Jtc3RyLCBwcmVmaXgsIHByZWZp eF9sZW4sIE5VTEwsIDAsIE5VTEwsIDAsIChaX1RZUEVfUChmb3JtZGF0YSkgPT0gSVNfT0JK RUNUID8gZm9ybWRhdGEgOiBOVUxMKSwgYXJnX3NlcCwgaXNfcmZjMzk4NiBUU1JNTFNfQ0Mp ID09IEZBSUxVUkUpIHsKIAkJaWYgKGZvcm1zdHIuYykgewogCQkJZWZyZWUoZm9ybXN0ci5j KTsKIAkJfQo= --------------050904060804000408010403--