Scriptbase Highlighting

visionsign

Mitglied
Hallo nochmal, ich habe folgendes Script:

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?
 
merci

mein code sieht jetzt folgendermaßen aus:

(Problem: es wird die BESCHREIBUNG und VON angezeigt, leider nicht der CODE, es erscheint keine Fehlermeldung)

PHP:
 <br><br>
 <?php
 
 function highlight(
 $file,
 $width = 80
 ) {
 	// Code bekommen
 	if (!function_exists('file_get_contents')) {
    function file_get_contents($file) {
 	   $v = file($file);
 	   return ($v) ? implode('', $v) : false;
    }
 }
 	
 	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>';
 }
 
 $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($anzeigen);
 		echo "				    </td>  
 					</tr>
 	  </table> <br>" ;
 	}
    
 ?>
 
Die Funktion "highlight()" gibt halt nix aus.
Definiere file>_get_contents() wie auf php.net beschrieben(ich würd dort lieber den 2. Vorschlag nehmen;))
....und lasse den Rest, wie er war.
 
Zurück