Bug #16838 Updated: PHP short_open_tags and <?xml .. ?>

From: Date: Fri, 26 Apr 2002 10:28:44 +0000
Subject: Bug #16838 Updated: PHP short_open_tags and <?xml .. ?>
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-6085@lists.php.net to get a copy of this message
ID: 16838 Updated by: sloetz@web.de Reported By: sloetz@web.de Status: Suspended Bug Type: Feature/Change Request Operating System: all PHP Version: 4.2.0 New Comment: Hi, turning off short tags is not a real solution as long as PHP offically supports them. There are tons of code out there using short tags and there will be even more new code with short tags if this feature will not be abolished. Furthermore, and I have to repeat this, there is huge group of PHP users that has no access to the php.ini settings (e.g. mod_php with safe_mode in a shared hosting environment). Should these users be forced to modify third-party code over and over again because the developers of this code insist on (offically supported) short tags? For companies and groups that offer web hosting services this is simply not viable. You can't over web hosting with mutual exclusion of XHTML and PHP. And I also have to stress that again: PHP, a *hypertext preprocessor*, is not able to parse standard compliant XHTML! I think there are only two solutions: Doing it the hard way by wholly removing short tags or changing PHP in a way that allows the usage of XHTML and short tags. A third approach to this problem is not a real solution but an option for the user, namely switching to another scripting language. Sascha Previous Comments: ------------------------------------------------------------------------ [2002-04-26 05:51:35] derick@php.net Then just turn off short-tags. And there won't be any change in this, as: 1. It came up numerous times on php-dev 2. It makes little sense Derick ------------------------------------------------------------------------ [2002-04-26 05:45:45] icarus@dabo.de Hi! I find this an extremly annoying behaviour, too. Since you can use PHP to parse every file with nearly no loss of performance (whether it contains PHP code or not) and only when it contains PHP-code it would be really parsed through the PHP-parser. To my optinion it is often done that you simply let php parse every html-file, so the visitor cannot see if its generated dynamically or static. Since you will have pages that are _really_ static you would have to add php-code to simply add this "<?xml ..." which would cost much performance. Bye! Michael ------------------------------------------------------------------------ [2002-04-26 04:27:18] sloetz@web.de It is definitely not extraneous, as today PHP, despite its claim to be a hypertext preprocessor, is not capable of handling standard conforming XHTML documents. Of course you can echo the ?xml-tag but that was not my point. That would be just another workaround for situations where your single goal is to produce XML compliant *output*. There is an increasing demand to keep the input files in a format that can be processed by XML tools - most users I know of use XHTML exactly for this reason and not for the mere fun of adding closing tags all over the document :-) But that is not the only problem. With the advent of Apache 2 it will become common practice to apply multiple filters successively to a source document, e.g. use XSLT to produce XHTML with PHP from XML sources and the send it to the PHP parser. What will be PHP's answer? Don't use XML? Or enable PHP usage through pre- and postprocessing filters that first remove and then add xml-tags again? To be honest, I think my suggested solution is neither elegant nor very clever, but it should do its job. Definitely the best solution would be to abolish all kinds of short tag and asp tag syntax and only allow the '<?php' and '<script..' styles. As far as I know, there have been various discussions on that topic in the past, so I decided not to suggest this again. Thanks, Sascha ------------------------------------------------------------------------ [2002-04-25 20:56:41] rasmus@php.net This seems extraneous to me. You can simply echo the one <?xml tag that is usually needed. No need to turn off short_tags. Just do: <?echo '<?xml ...'?> at the top. ------------------------------------------------------------------------ [2002-04-25 20:07:28] sloetz@web.de Hello, I would like to suggest a small change in PHP's handling of open tags. I think it would be diserable to allow the use of the short tag syntax ('<? ..?>') for documents also containing <?xml [..] ?> tags. The increasing usage of XML and especially XHTML (for which the <?xml..?> tag is of course mandatory) will lead to a growing number of collisions between PHP's syntax and user's requirements. AFAIK the only way for mixing xml-documents with PHP code is to disable the short_open_tags option in the php.ini file or make equivalent settings in the httpd.conf (if using the Apache SAPI). In my opinion, this is more a workaround than a real solution. Obviously, it is impossible to include 'old' code or third-party code which uses short tags and even more important: not every user has access to the php.ini file or httpd.conf file to modify the settings accordingly. Therefore I would like to propose to change the PHP language scanner (as found in zend_language_scanner.l) in a way that the token '<?xml' is not treated as a PHP opening tag but rather (correctly) recognized as inline HTML. It could probably be sufficient to create an additional rule for the scanner's <INITIAL>-start condition that would catch the string '<?xml' before it can be treated as an PHP open tag, e.g.: <INITIAL>"<?xml" { zendlval->value.str.val = (char *) estrndup(yytext, yyleng); zendlval->value.str.len = yyleng; zendlval->type = IS_STRING; return T_INLINE_HTML; } I'm not sure whether this piece of code really works or has unwanted side effects etc., but I guess it can put forward my intention more clearly than more words :-) Thanks for your attention, Sascha Loetz (sloetz@web.de) ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=16838&edit=1

« previous php.bugs (#6085) next »