|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2003-11-23 09:25 UTC] prof_moriarty at veryfast dot biz
Description:
------------
There seem to be some major issues with preg_replace in this version.
See code actual and reproducable for explanations
Reproduce code:
---------------
$string = "ship_id = '17' ||";
$string = preg_replace("/\|\| $/", "", $string);
echo $string;
Expected result:
----------------
SHOULD result in
ship_id = '17'
being printed to the screen.
Actual result:
--------------
PHP crashes.
Indeed it would seem absolutely anything i enter as either the regexp, or the string will crash it. Even if both are blank.
Below is the 'details' of the error (as gained from windows thing):
"
PHP caused an invalid page fault in
module <unknown> at 0000:854fd78b.
Registers:
EAX=0000004c CS=016f EIP=854fd78b EFLGS=00010246
EBX=0063f474 SS=0177 ESP=0063f330 EBP=10135328
ECX=00000000 DS=0177 ESI=0000004c FS=96a7
EDX=0000008a ES=0177 EDI=007d68cc GS=0000
Bytes at CS:EIP:
00 2e 00 05 00 2e 00 05 00 2e 00 05 00 2e 00 05
Stack dump:
011750f4 ffffffff 10135328 10135328 01010101 01010101 01010101 00100101 0000004c 00100010 01820010 00000000 00000000 0102014c 01020102 01020102
"
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Thu Oct 30 06:00:02 2025 UTC |
Your regex wont work. Your trying to match || followed by a space at the end of the string. Where you have space then the double pipes in $string. Using ------ $string = "ship_id = '17' ||"; $string = preg_replace("/ \|\|$/", "", $string); echo $string; I get no ship_id = '17' as exepctedBut the regexp DOES work with 3.4.2!!! And earier version too. What the regexp ("/\|\| $/") does is: \|\| = looking for || " " = looking for space $ = the above must be at the end of the string No piping or anything else required there. And the string it's replacing is something more like: $del_str .= "ship_id = '17' || "; (with an extra space at the end (typo my missing it out on the original post)). That'd be why you thought it wouldn't work. Sorry. ;)