note 40059 added to function.quoted-printable-decode
| From: | tamas dot tompa at kirowski dot com | Date: | Fri, 20 Feb 2004 12:46:15 +0000 |
| Subject: | note 40059 added to function.quoted-printable-decode | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-65442@lists.php.net to get a copy of this message | ||
i have found a bug in pob at medienrecht dot NOSPAM dot org
's qp_enc function. in quoted printable messages need to convert the first pont in the lines
too...
here is the fixed code:
function qp_enc( $input = "", $line_max = 76, $space_conv = false ) {
$hex =
array('0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F');
$lines = preg_split("/(?:\r\n|\r|\n)/", $input);
$eol = "\r\n";
$escape = "=";
$output = "";
while( list(, $line) = each($lines) ) {
//$line = rtrim($line); // remove trailing white
space -> no =20\r\n necessary
$linlen = strlen($line);
$newline = "";
for($i = 0; $i < $linlen; $i++) {
$c = substr( $line, $i, 1 );
$dec = ord( $c );
if ( ( $i == 0 ) && ( $dec == 46 ) ) { //
convert first point in the line into =2E
$c = "=2E";
}
if ( $dec == 32 ) {
if ( $i == ( $linlen - 1 ) ) { // convert
space at eol only
$c = "=20";
} else if ( $space_conv ) {
$c = "=20";
}
} elseif ( ($dec == 61) || ($dec < 32 ) ||
($dec > 126) ) { // always encode "\t", which is *not* required
$h2 = floor($dec/16);
$h1 = floor($dec%16);
$c = $escape.$hex["$h2"].$hex["$h1"];
}
if ( (strlen($newline) + strlen($c)) >=
$line_max ) { // CRLF is not counted
$output .= $newline.$escape.$eol; //
soft line break; " =\r\n" is okay
$newline = "";
// check if newline first character will
be point or not
if ( $dec == 46 ) {
$c = "=2E";
}
}
$newline .= $c;
} // end of for
$output .= $newline.$eol;
} // end of while
return trim($output);
}
----
Manual Page -- http://www.php.net/manual/en/function.quoted-printable-decode.php
Edit -- http://master.php.net/manage/user-notes.php?action=edit+40059
Delete -- http://master.php.net/manage/user-notes.php?action=delete+40059&report=yes
Reject -- http://master.php.net/manage/user-notes.php?action=reject+40059&report=yes
Search -- http://master.php.net/manage/user-notes.php