ID:               40961
 User updated by:  jfgingras at cegep-ste-foy dot qc dot ca
 Reported By:      jfgingras at cegep-ste-foy dot qc dot ca
-Status:           Bogus
+Status:           Open
 Bug Type:         *Regular Expressions
 Operating System: FreeBSD 6.1-RELEASE
 PHP Version:      5.2.1
 New Comment:

See last comment


Previous Comments:
------------------------------------------------------------------------

[2007-04-03 14:16:38] jfgingras at cegep-ste-foy dot qc dot ca

You're probably right. But still, if I use the following pattern
"/([^\x09\x0A\x0D\x20-\x7E\xA0-\xFF])/", preg_replace always return
NULL. But if I use "[^\x09\x0A\x0D\x20-\x7E\xA0-\xFF]" it "works", that
is, it will not return NULL.

If I use '/^[a-f\d]{32}$/i' on "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
preg_match always return false.

The exemples above occur on FreeBSD 6.1 with PHP 5.2.1.
I test thoses on Linux 2.6.9 with PHP 5.1.6 and it work.

Any idea ?

------------------------------------------------------------------------

[2007-04-02 21:27:49] [EMAIL PROTECTED]

Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

Your regex is wrong, you cannot include the "$" (end of string) inside
a 
capturing sub-pattern.

------------------------------------------------------------------------

[2007-04-02 15:53:05] jfgingras at cegep-ste-foy dot qc dot ca

Forget to mention that no php error are logged in the log file. I even
set 666 mode on phperror.log just to be sure that php can write in it.
But still no error shown.

Strangly, like I said preg_replace works if I remove the '/(' and ')/'
from the pattern, but preg_match always return false. But, it print an
error:

[02-Apr-2007 11:51:29] PHP Warning:  preg_match() [<a
href='function.preg-match'>function.preg-match</a>]: No ending delimiter
'^' found in /usr/local/www/f.php on line 6

And here's the line 6:

if(preg_match('^[a-f0-9]{32}$', $body)) echo "YEAH #2!";

------------------------------------------------------------------------

[2007-04-02 15:45:18] jfgingras at cegep-ste-foy dot qc dot ca

$body = "b2c3d4e5f6a7b8c9e0f1a2b3c4d5e6f7";
$body = preg_replace('/(^[a-f0-9]{32}$)/', '?', $body );
var_dump($body);

It is not even returning a empty string, it return NULL!

Here's what I have in my php.ini

error_reporting  =  E_ALL
log_errors = On
error_log = /var/log/phperror.log

Here's my php info

[EMAIL PROTECTED] ~]# php -v
PHP 5.2.1 with Suhosin-Patch 0.9.6.2 (cli) (built: Mar 30 2007
10:03:24)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies

Any help is more than welcome.

Thx!

------------------------------------------------------------------------

[2007-03-30 22:33:13] tijnema at gmail dot com

$body = "b2c3d4e5f6a7b8c9e0f1a2b3c4d5e6f7";
$body = preg_replace('/(^[a-f0-9]{32}$)/', '?', $body );
var_dump($body);

Above code gives me string(1) "?" on PHP-5.1.6/5.2.1/6.0-dev on linux
using CLI or Apache.

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/40961

-- 
Edit this bug report at http://bugs.php.net/?id=40961&edit=1

Reply via email to