流函数

目录

添加说明

用户贡献说明 2 个说明

10
marcus at synchromedia dot co dot uk
16 年前
我在任何地方都找不到关于 quoted-printable-encode 流过滤器的真正文档,但我从几个地方收集了信息。似乎可以在参数数组中传递 4 个选项,就像我在关于此主题的另一个说明中所做的那样

line-length:整数,只需设置在插入软换行符之前的行长度
line-break-chars:哪些字符或字符被视为换行符 - 请注意,"\r\n" 仅匹配 CRLF,不匹配 CR 或 LF,因此请确保它与您的内容匹配。
binary:布尔值,十六进制编码所有控制字符,包括空格和换行符,但保留字母数字字符不变
force-encode-first:强制对每行的第一个字符进行十六进制编码,即使它是字母数字字符。这对于避免某些不称职的邮件服务器(如 Exchange)中的损坏非常有用。
-5
marcus at synchromedia dot co dot uk
17 年前
正如这篇文章所说,PHP 中没有 quoted_printable_encode 函数():http://www.zend.com/manual/filters.convert.php

但是有一个流过滤器用于 quoted printable 编码。这是一个示例函数,它生成适合电子邮件的输出,并且不会显式使用外部文件(尽管对于超过 2Mb 的字符串,它可能会这样做,因为临时流类型的性质)

<?php
function quoted_printable_encode($string) {
$fp = fopen('php://temp/', 'r+');
$params = array('line-length' => 70, 'line-break-chars' => "\r\n");
stream_filter_append($fp, 'convert.quoted-printable-encode', STREAM_FILTER_READ, $params);
fputs($fp, $string);
rewind($fp);
return
stream_get_contents($fp);
}

echo
quoted_printable_encode(str_repeat("hello there ", 50)." a=1\r\n")."\n";
?>

过滤器需要限制为 STREAM_FILTER_READ,因为默认情况下它将被过滤进出流,因此将被编码两次。

它应该比使用 PHP 实现相同功能快得多,但请注意,这仅在 PHP 5.1+ 中有效。
To Top