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

Reply via email to