PHP 4.0 Bug #6841: split, explode, strtok not parsing correctly
| From: | swenson at heronetwork dot com | Date: | Fri, 22 Sep 2000 02:55:42 +0000 |
| Subject: | PHP 4.0 Bug #6841: split, explode, strtok not parsing correctly | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-33474@lists.php.net to get a copy of this message | ||
From: swenson@heronetwork.com
Operating system: SuSE
PHP version: 4.0.2
PHP Bug Type: Scripting Engine problem
Bug description: split, explode, strtok not parsing correctly
On current build I am trying to parse an external tab and
space separated file (mime types). All of the tokenizing functions appear to not be performing the
regex parsing correctly. All of these functions are performing very odd. Most interesting is that
the first item is not even getting into the arrays (or token lists).
Example input:
# Simple mime file
text/html htm HTM html HTML shtml SHTML
text/plain java JAVA c C cc CC cpp CPP h H txt TXT
text/rtf rtf RTF
Script:
<?php
$mimeFile="/tmp/mime.txt";
function get_mime_type ( $ext ) {
global $mimeFile;
if( !$ext || strlen(trim($ext)) == 0 ) {
return "application/binary";
}
$fp = fopen ($mimeFile, "r");
while(!feof($fp)) {
$next = fgetss($fp, 300);
$next = trim($next);
echo("<p>Line in: $next<br>");
if( !$next ) continue;
// try it with [\t\s] or [:space:] or " " etc.
// it just has problems, same with split and strtok $mime = explode("[
]",$next);
if( substr($mime[0], 0, 1) == "#" ) continue;
$len = count($mime);
echo("Line has: $len tokens - ");
for( $x = 1 ; $x <= $len ; $x++ ) {
if( !$mime[$x] ) continue;
if( substr($mime[$x] ,0 , 1) == "#" ) break;
echo("$x - $mime[$x], ");
if( $ext == $mime[$x] ) return $mime[0];
}
}
return "application/binary";
}
echo("<br><H1>Mime type for .H is " . get_mime_type(".H") .
"</H1>");
?>
Sample output:
Line in: # Simple mime file
Line in:
Line in: text/html htm HTM html HTML shtml SHTML
Line has: 6 tokens - 1 - HTM, 2 - html, 3 - HTML, 4 - shtml, 5 - SHTML,
Line in: text/plain java JAVA c C cc CC cpp CPP h H txt TXT
Line has: 12 tokens - 1 - JAVA, 2 - c, 3 - C, 4 - cc, 5 - CC, 6 - cpp, 7 - CPP, 8 - h, 9 - H, 10 -
txt, 11 - TXT,
Line in: text/rtf rtf RTF
Line has: 2 tokens - 1 - RTF,
Line in:
Mime type for .H is application/binary