Just use your own little script for this kind of thing; it doesn't belong in the core of the language.
--Wez. On Thu, 29 May 2003, George Whiffen wrote: > Apologies in advance if internals is not for feature requests. > > > include() and require() pick up the whole file. Could we have the > option to include just part of the file? > > > Proposed new syntax for include(), require(): > > include ( string filename [, string start_tag [, string end_tag]]) > > If the optional start_tag is specified, the file is only read from > immediately after the first occurrence of the start_tag string in the > file. If the optional end_tag is also specified, reading of the file > stops with the last character before the end_tag. > > Example: > > include('layout.html',"<!-- section header -->\n","\n<!-- section"); > > with layout.html as follows: > > <!-- section header --> > <html> > <head> > </head> > <body> > <img src="banner.gif"> > <h1> Some standard title</h1> > <table width="700"> > <tr> > <td> > <!-- section middle --> > Some php output > <!-- section footer --> > </td> > </tr> > </table> > <h2>Complaints to <A HREF="<?= $email?>" me</A><h2> > </body> > </html> > > would include only the header section, i.e.: > > <html> > <head> > </head> > <body> > <img src="banner.gif"> > <h1> Some standard title</h1> > <table width="700"> > <tr> > <td> > > Purpose: > At least for me, it is very common for at least the header and footer of > every page to be prepared and maintained by an html developer as part of > a "standard" layout. Individual php generated html pages "include" the > header, then write their own output and finally "include" the footer. > > With the current include()/require(), the header and footer MUST be > stored in individual files. They have to be "cut out" of the standard > layout design page and stored in separate files e.g. header.txt and > footer.txt. From then on, the html developer has to maintain them > individually without the benefit of viewing them together in the layout > page via their html editor. > > With partial includes available, the layout page could be used directly > to provide the header, footer, navigation and any other standard > includes while still being easily maintainable and viewable as a whole > by non-php html developers using standard html editors. > > I believe this is a common scenario where partial includes would save > time and significantly improve maintainability. There are plenty of > other possible uses. It could just as well be mail text, xml, or plain > old php code that you might prefer to handle in sections of one file > rather than being forced into placing each section in a separate include > files. > > Implementation: > With the proposed syntax, implementation shouldn't be too bad. It's > really just an extra couple of string scans i.e. the php equivalent > would be something like: > > $code = get_file_contents($filename); > $startpos = strpos($code,$start_tag); > if ($startpos) > { > $startpos = $startpos + strlen($start_tag); > $endpos = strpos($code,$end_tag,$startpos); > if ($endpos) > { > $code = substr($code,$startpos,$endpos - $startpos); > } else { > $code = substr($code,$startpos); > } > } > eval('?>'.$code.'<?'); > > There is no need for regex or tokenizing, and it's the user's > responsibility to decide if they want to keep or lose trailing/starting > new lines, enclosing comment tags etc. > > The trickiest question is where/when to do the scans to pick out the > appropriate section of the file. The most obvious candidate is probably > Zend/zend_language_scanner.c:zend_read_file(). This seems to be where an > include file is actually read. Unfortunately it's pretty deep into the > code and I don't suppose anyone would want to change it without at least > having Zeev/Andi/Whoever's go-ahead. > > As to performance, my guess is it would be significantly faster than an > include of two separate files: after the first include there's a > fighting chance of finding the include file still in O/S file/disk cache > for second and subsequent accesses. > > > What do you all think? > > George. > > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > > > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php