visionsign
Mitglied
Hallo nochmal, ich habe folgendes Script:
So, ich bekomme es leider nicht so modifiziert, dass es mir die verschiedenen Scripts aus der DB holt. Ich möchte, dass jeder Code in einem einzellnen Block (oder eher Tabelle) steht, und nach der obigen funktion gehighlightet wird.
Ich habe dies versucht mit:
Leider mit der Fehlermeldung
Fatal error: Call to undefined function: file_get_contents() in datei.php on line 10
Line 10 ist :
Was mache ich falsch?
PHP:
<?php
function highlight(
$file,
$width = 80
) {
// Code bekommen
ob_start();
highlight_string(trim(str_replace(array("\r\n", "\r"), "\n", file_get_contents($file))));
$return = ob_get_contents();
ob_end_clean();
// XHTML-Konvertierung
$return = preg_replace('/<font/i', '<span', $return);
$return = preg_replace('/<\/font\s*>/i', '</span>', $return);
$return = preg_replace('/color\s*=\s*"/i', 'style="color:', $return);
// Hinzufügen von Zeilennummern
$return = explode('<br />', $return);
$iLen = strlen(count($return));
for($i = 0; $i < count($return); $i++) {
$sGap = ($iLen - strlen($i + 1));
$return[$i] = '<span style="color: #999999">' . str_repeat('0', $sGap) . ($i + 1) . ': </span>' . $return[$i];
}
$return = implode("\n<br />", $return);
// Einfuegen zusaetzlicher Zeilenumbrueche
$break = "\n<br />";
// Status
$status = 0;
$entity = '';
$pos = 0;
$char = 0;
$space = 0;
$spaceChar = 0;
while($pos < strlen($return)) {
if ($char >= $width) {
if ($spaceChar > 0) {
$return = substr($return, 0, $space) . $break . substr($return, $space);
$char -= $spaceChar;
$spaceChar = 0;
} else {
$return = substr($return, 0, $pos) . $break . substr($return, $pos);
$char = 0;
}
}
switch ($status) {
case 0:
switch ($return{$pos}) {
case '<':
$status = 1;
break;
case '&':
$entity = '';
$status = 2;
break;
case "\n":
$spaceChar = 0;
$char = 0;
break;
case ' ':
$space = $pos;
$spaceChar = $char;
$char++;
break;
default:
$char++;
break;
}
break;
case 1:
if ($return{$pos} == '>') {
$status = 0;
}
break;
case 2:
if ($return{$pos} == ';') {
if (strtolower($entity) == 'nbsp') {
$space = $pos + 1;
$spaceChar = ++$char;
}
$status = 0;
} else {
$entity .= $return{$pos};
}
break;
}
$pos++;
}
// Funktionen verlinken
$regexp = '/(^|[^a-z\$_])(' . implode('|', reset(get_defined_functions())) . ')($|[^a-z_])/i';
$return = preg_replace($regexp, '\\1<a class="code" href="http://de.php.net/\\2">\\2</a>\\3', $return);
return '<div class="code">' . $return . '</div>';
}
?>
So, ich bekomme es leider nicht so modifiziert, dass es mir die verschiedenen Scripts aus der DB holt. Ich möchte, dass jeder Code in einem einzellnen Block (oder eher Tabelle) steht, und nach der obigen funktion gehighlightet wird.
Ich habe dies versucht mit:
PHP:
<?
$code = mysql_query ("select * from CODE order by ID desc");
while ($ausgabe_code = mysql_fetch_array ($code, MYSQL_ASSOC)) {
$anzeigen = $ausgabe_code["CODE"];
echo "
<br>
Beschreibung: $ausgabe_code[BESCHREIBUNG]<br>
eingetragen von: $ausgabe_code[VON]
<table width=\"100%\" border=\"0\" align=\"center\" cellpadding=\"2\" cellspacing=\"2\">
<tr>
<td valign=\"top\" class=\"highlight\">\n";
highlight_string($anzeigen);
echo " </td>
</tr>
</table> <br>" ;
}
?>
Leider mit der Fehlermeldung
Fatal error: Call to undefined function: file_get_contents() in datei.php on line 10
Line 10 ist :
PHP:
highlight_string(trim(str_replace(array("\r\n", "\r"), "\n", file_get_contents($file))));
Was mache ich falsch?