Weil ich in den letzten beiden Tagen zweimal das Bedürfnis hatte ein paar Codeschnipssel zu posten, aber dafür keinen Thread eröffnen wollte und es doch würdig genug für den On-Topic halte, hier einen Thread für kleine Codeschnippsel aller Art.
Um gleich anzufangen, ein bisschen PHP-Code. Weil ich mich so eben entschieden habe, PHPs Templatefunktionen wahrzunehmen (weil schneller als jedes auf PHP basierende Templatesystem) und desweiteren dies mit den kurzen PHP-Tags machen möchte (<? und <?=), diese aber (zurrecht) auf Servern abgeschaltet sind, hier Streamfilter der die Short-Tags durch die lange Version ersetzt:
PHP
<?php
// Die Filterklasse
class short_open_tags_filter extends php_user_filter {
private $replacements = array(
'<?' => '<?php',
'<?=' => '<?php echo ',
'<?php' => '<?php' /* stupid, but we want long tags */
);
public function filter($in, $out, &$consumed, $closing) {
while ($bucket = stream_bucket_make_writeable($in)) {
$end = substr($bucket->data, -2);
if($end[1] == '<' || $end == '<?') {
return PSFS_FEED_ME;
}
$bucket->data = strtr($bucket->data, $this->replacements);
$consumed += $bucket->datalen;
stream_bucket_append($out, $bucket);
}
return PSFS_PASS_ON;
}
}
// Den Filter registrieren
stream_filter_register('short_open_tags', 'short_open_tags_filter');
// Verwendung
$prefix = '';
if(!@ini_get('short_open_tag')) {
// siehe http://php.net/wrappers.php
$prefix = "php://filter/read=short_open_tags/resource=";
}
// Öffnet die PHP-Datei und ersetzt noch während dem Einlesen die Tags
include($prefix."content.php");
}
?>
Alles anzeigen