note 40059 added to function.quoted-printable-decode

From: 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

« previous php.notes (#65442) next »