ID: 23984
Updated by: [EMAIL PROTECTED]
Reported By: ltfrench at vt dot edu
-Status: Open
+Status: Bogus
Bug Type: PCRE related
Operating System: Redhat 8.0
PHP Version: 4.3.1
New Comment:
I believe this is a limitation of the PCRE library. From
the PCRE man page:
"The pattern is a C string terminated by a binary zero,
and is passed in the argument pattern. ... The subject
string is passed as a pointer in subject, a length in
length, and a starting offset in startoffset. Unlike the
pattern string, it may contain binary zero characters."
So, you can't have NULL characters in the pattern string.
You can use str_replace() to replace those NULL
characters, though.
J
Previous Comments:
------------------------------------------------------------------------
[2003-06-03 12:13:52] ltfrench at vt dot edu
Ok, this will teach me to try to write new test cases. The first test
case was bogus, I'm a boob.
The problem I am really having with is with preg_replace().
<?php
$string = "string\0withnull";
// array of bad ascii values I want to ditch
$ary = array( chr(0), chr(1) );
foreach( $ary as $badchar ){
pattern = "/$badchar/";
replacement = "TEST";
$string = preg_replace($pattern, $replacement, $string);
}
echo $string;
?>
This generates
Warning: No ending delimiter '/' found in /home/www/web_root/lance.php
on line 19
Which leads me to believe that my $pattern string got truncated without
the trailing / when used in preg_replace.
------------------------------------------------------------------------
[2003-06-03 10:09:07] [EMAIL PROTECTED]
PHP is looking for a variable named $nullwithnull so to make this work,
you must use "string{$null}withnull"...
------------------------------------------------------------------------
[2003-06-03 08:56:54] ltfrench at vt dot edu
This problem is very similar to: http://bugs.php.net/bug.php?id=14580
and also http://bugs.php.net/bug.php?id=18341 but seems to have cropped
up again.
Inserting a null character into a string with the chr() function causes
the string to be truncated.
<?php
$null = chr(0);
$a = "string\0withnull";
$b = "string$nullwithnull";
echo $a . "\n";
echo $b . "\n";
echo strlen($a) . "\n";
echo strlen($b) . "\n";
?>
Output:
stringwithnull
string
15
6
I encountered this with a generic php 4.3.1 setup.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=23984&edit=1