Re: Directoryiterator / preg_match behavior

From: Date: Thu, 02 Sep 2004 04:24:11 +0000
Subject: Re: Directoryiterator / preg_match behavior
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-12539@lists.php.net to get a copy of this message
* Thus wrote Aaron Wormus: > > foreach (new DirectoryIterator('.') as $file) { > echo "<pre>"; > var_dump($file); > > if (preg_match("/xxx/", $file)){ > // Why is this breaking $file?? > // without even a warning > } > > var_dump($file); > echo "</pre>"; > } This probably needs some attention, here are some related issues that I've came accross trying to find out why the above was happening: Test 1: ($file holds last type conversion) <?php foreach (new DirectoryIterator('.') as $file) { echo "\n--\n"; var_dump($file); preg_match("/xxx/", $file); var_dump($file); echo "\n--"; } Output: Object(DirectoryIterator)#1 (0) { } string(1) "." -- -- string(1) "." string(1) "." -- ... Test 2: (working example) ---------- <?php $d = new DirectoryIterator('.'); foreach ($d as &$file) { echo "\n--\n"; var_dump($file); preg_match("/xxx/", $file); var_dump($file); echo "\n--"; } Output: -- object(DirectoryIterator)#1 (0) { } object(DirectoryIterator)#1 (0) { } -- -- object(DirectoryIterator)#1 (0) { } object(DirectoryIterator)#1 (0) { } -- ... Test 3: (completly fails) ---------- <?php foreach (new DirectoryIterator('.') as &$file) { echo "\n--\n"; var_dump($file); preg_match("/xxx/", $file); var_dump($file); echo "\n--\n"; } Output: PHP Parse error: syntax error, unexpected T_STRING in test.php on line 2 This appears to be a definate bug somewhere and I cant spot it atm. Curt -- First, let me assure you that this is not one of those shady pyramid schemes you've been hearing about. No, sir. Our model is the trapezoid!

« previous php.internals (#12539) next »