0)?substr($data,0,$len):""; $data = ($len>0)?substr($data,$len):$data; return $str; } function display_data($in) { if ( is_array($in) ) { $in = join('', $in); } for($i=0; $i $packet ) { echo "Packet Number ".($packet_id+1)."\n"; display_packet($packet); } } function display_packet($packet, $bits=16, $offset=0) { for( $i=$offset; $i?.,;:"\'\[\]\{\}|\\_=+-]!', $chr) ) { $display .= $chr; } else { $display .= '.'; } } else { echo ' '; } } echo ' '; echo str_pad($display, $bits, ' '); echo " \n"; } } $filename = './lorem_ipsum.doc'; #echo display_packet(file_get_contents($filename), 32); if ( ($fh = fopen($filename, 'r')) !== false ) { # Grab header information & place pointer at the start of the plain text $headers = fread($fh, 0xA00); # 1 = (ord(n)*1) ; Document has from 0 to 255 characters $n1 = ( ord($headers[0x21C]) - 1 ); # 1 = ((ord(n)-8)*256) ; Document has from 256 to 63743 characters $n2 = ( ( ord($headers[0x21D]) - 8 ) * 256 ); # 1 = ((ord(n)*256)*256) ; Document has from 63744 to 16775423 characters $n3 = ( ( ord($headers[0x21E]) * 256 ) * 256 ); # (((ord(n)*256)*256)*256) ; Document has from 16775424 to 4294965504 characters $n4 = ( ( ( ord($headers[0x21F]) * 256 ) * 256 ) * 256 ); # Total length of text in the document $textLength = ($n1 + $n2 + $n3 + $n4); # Read full length of plain text into variable $extracted_plaintext = fread($fh, $textLength); # if you want the plain text with no formatting, do this echo $extracted_plaintext.PHP_EOL; fclose($fh); }