3
A
回答
3
我想這應該這樣做:
function rfc2231_encode($name, $value, $charset='', $lang='', $ll=78) {
if (strlen($name) === 0 || preg_match('/[\x00-\x20*\'%()<>@,;:\\\\"\/[\]?=\x80-\xFF]/', $name)) {
// invalid parameter name;
return false;
}
if (strlen($charset) !== 0 && !preg_match('/^[A-Za-z]{1,8}(?:-[A-Za-z]{1,8})*$/', $charset)) {
// invalid charset;
return false;
}
if (strlen($lang) !== 0 && !preg_match('/^[A-Za-z]{1,8}(?:-[A-Za-z]{1,8})*$/', $lang)) {
// invalid language;
return false;
}
$value = "$charset'$lang'".preg_replace_callback('/[\x00-\x20*\'%()<>@,;:\\\\"\/[\]?=\x80-\xFF]/', function($match) { return rawurlencode($match[0]); }, $value);
$nlen = strlen($name);
$vlen = strlen($value);
if (strlen($name) + $vlen > $ll-3) {
$sections = array();
$section = 0;
for ($i=0, $j=0; $i<$vlen; $i+=$j) {
$j = $ll - $nlen - strlen($section) - 4;
$sections[$section++] = substr($value, $i, $j);
}
for ($i=0, $n=$section; $i<$n; $i++) {
$sections[$i] = " $name*$i*=".$sections[$i];
}
return implode(";\r\n", $sections);
} else {
return " $name*=$value";
}
}
注意,這個函數期望的輸出是通過適當的換行(即CRLF)前面有一個單獨的行使用,例如:
"Content-Type: application/x-stuff;\r\n".rfc2231_encode('title', 'This is even more ***fun*** isn\'t it!', 'us-ascii', 'en', 48)
的輸出是:
Content-Type: application/x-stuff;
title*0*=us-ascii'en'This%20is%20even%20more%20;
title*1=%2A%2A%2Afun%2A%2A%2A%20isn%27t%20it!
+0
你能提供一個使用的例子嗎? – 2011-02-11 12:22:32
相關問題
- 1. 解碼RFC 2231標頭
- 2. 如何對文件名進行編碼?
- 3. 如何在PHP中對多字節文件名進行編碼並在JavaScript中對它們進行解碼?
- 4. 如何對JavaScript文件進行編碼?
- 5. 對文件進行編碼
- 6. 根據RFC RFC Flex 2396
- 7. PHP:RFC-2231如何將UTF-8字符串編碼爲內容處理文件名
- 8. 如何對文件名進行編碼下載?
- 9. 如何根據此href鏈接對link_to進行編碼?
- 10. 如何在jsp中對cookie數據進行編碼並在php中對其進行解碼?
- 11. 如何在Python文件中對bash腳本進行硬編碼
- 12. 如何在Java中對字符串進行編碼以用作文件名?
- 13. 根據RFC 2817
- 14. 如何根據另一個文件對文件進行排序?
- 15. 如何根據目標名稱進行條件編譯?
- 16. 如何根據PHP中文件名的兩部分對文件進行排序和發送?
- 17. 如何根據R中文件的名稱對df進行更改?
- 18. 如何在Jsp中對文本進行編碼和解碼
- 19. 如何避免在php中對網站根進行硬編碼以包含「配置文件」?
- 20. 如何在PHP中對合格的關聯進行編碼?
- 21. JSON如何在PHP中對HTML進行編碼?
- 22. 如何在PHP中正確地對URL進行編碼?
- 23. 如何在PHP中對Json數組進行編碼?
- 24. 如何在php中使用preg_replace函數對url進行編碼?
- 25. 如何在PHP中對此算法進行編碼?
- 26. 如何對我的「二進制文件」進行編碼? (php腳本)
- 27. 如何使用.Pem文件對代碼進行編碼?
- 28. 根據NodeJs中的RFC 1738編碼字符串
- 29. 對文件路徑進行編碼
- 30. 根據文件名中間的版本號對文件進行排序
你可能想澄清一下這個問題。 – Gordon 2011-02-11 11:53:30