ID: 47306 Updated by: johan...@php.net Reported By: michael dot buergi at zhdk dot ch -Status: Open +Status: Bogus Bug Type: Feature/Change Request PHP Version: 5.2.8 New Comment:
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 You can atually use any characters as constant name and if you can't trust your developers you have way bigger issues ... Previous Comments: ------------------------------------------------------------------------ [2009-02-04 16:18:10] michael dot buergi at zhdk dot ch Description: ------------ current situation: Since PHP allows the characters 0x7f through 0xff in constant names, you can create constant names that contain non-printable characters - like the non-breaking space (NBSP) chr(160)! Sadly, any PHP-IDE (p.e. the Zend Studio for Eclipse) or editor that I have checked with recognises NBSP as whitespace. So this seems to be a perfect way to sabotage someones code. Just replace an ordinary space with NBSP and you are screwed. I pasted a small php script into "reproduce code" that defines a constant and echoes it two times, as it seems. But since there is a NBSP in front of the constant's name, PHP just echoes " SOME_CONST". the second echo is completely ignored since it searches for the constant "echo SOME_CONST". Motivation: Look at the sample script in a PHP editor and you won't find any error. Only in case you have E_NOTICE reporting turned on (which I don't) you would eventually find the mistake. change request: Having non-printable characters in constant names seems to be a bad idea for me. therefore I request that not the whole 0x7f-0xff character range could be used in constant names, but just the sane ones. And since I'm already here, why not raise the error-level from "notice" to "warning" if a constant's name is not found? You could introduce a php.ini flag that controls this behaviour. Thank you very much and kind regards Michael Reproduce code: --------------- <?php error_reporting(E_ALL); define('SOME_CONST', 'foobar'); echo SOME_CONST; echo SOME_CONST; ?> Expected result: ---------------- foobarfoobar Actual result: -------------- SOME_CONST ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=47306&edit=1