Jump to content
Sign in to follow this  
lit-web

gehighlighteten string nummeriert ausgeben

Recommended Posts

Hallo Leute,


nun habe auch ich nach einiger Zeit mal wieder eine Frage wo ich nun nach etlichen Versuchen nicht zum Ergebniss komme.


Ich gebe gehighlighteten Code aus, ihne den Versuch der Zeilennummerierung klappt das auch ohne Problem, nur wenn ich die Zeilen Nummeriert asugeben will klappt das nicht.


Es werden zwar die Zeilen nummeriert ausgegeben, aber mein highlighting funzt nicht mehr.


Hier mal mein Code.

 

");
	$text = ob_get_contents(); 
	ob_end_clean(); 

	//echo $anz_zeilen.''; 

	$div=''; 
	$div.=''; 
	$div.= 'PHP - CODE'; 
	$div.=''; 
	$div.=''; 
	if($anz_zeilen > 25){

		$div.='';
		$rows = 1;
		foreach($php_code as $text){

			$div.= $rows.':'.$text;

			$rows++;
		}
		$div.=''; 
	} 
	else {

		$div.='';

		$rows = 1;
		foreach($php_code as $text){

			$div.= $rows.':'.$text;

			$rows++;
		}
		$div.=''; 
	} 
	return $div; 
}
}

//allgemeine bb-code parser funktion
if(!function_exists('CodeParser'))
{
    function CodeParser($text)
   {
           //PHP Code Parser
           $text = preg_replace_callback("/\[php](.*?)\[\/PHP\]/si", 'php_string', $text);

           return $text;
   }
}
?>

 

Könnt ihr mir da weiter helfen was da schief läuft? Hier noch ein Bild wie es aussieht das ihr es euch auch bildlich vorstellen könnt was schief läuft.


Wie ihr hier sehen könnt wird der Code nicht mehr gehighlightet.

code_screen.JPG


Danke für eure Hilfe Mfg litter

Share this post


Link to post
Share on other sites

Schau dir einfach mal php_highlight() in der functions.inc.php vom pSys an. Hat damals mahe gemacht, ist einfach als zweispaltige Tabelle gelöst.


Dein Code kann meiner Meinung nach nicht funktionieren (kann mich auch irren...), da du mit den dazwischengesetzten Zeilennummern den eigentlichen Code zerstörst.

Share this post


Link to post
Share on other sites
Original von Powie

Schau dir einfach mal php_highlight() in der functions.inc.php vom pSys an. Hat damals mahe gemacht, ist einfach als zweispaltige Tabelle gelöst.


Dein Code kann meiner Meinung nach nicht funktionieren (kann mich auch irren...), da du mit den dazwischengesetzten Zeilennummern den eigentlichen Code zerstörst.



Kannst du mir die Datei mal geben oder hier mal den besagten codeteil posten, weil habe kein psys?


Ich dachte mir schon das ich da irgendwas zerstört habe dann in dem Code.

Share this post


Link to post
Share on other sites

Benötigst du nicht, denn du solltest einfach dein Problem verstehen. Dabei hilft dir fertiger Code nicht wirklich.

Dein Highloghter funktioniert aus zwei Gründen nicht:


1. weil du die Code Zeilen schonmal in setzt, ohne Leerzeichen.

Eigentlich müsste das so aussehen:


2. Du versuchst jede Zeile einzeln zu highlighten, das macht absolut keinen Sinn da viele viele Sachen im Script doch über mehrere Zeilen gehen, siehe Funktionen, if Blöcke, Schleifen usw.

Share this post


Link to post
Share on other sites

Das geht nicht weil der ganze gehighlightete Code in $text geworfen wird, aber später dann in der foreach() $text ja wieder überschrieben wird :-D


Ich hab das damals nicht umsonst in eine Tabelle geworfen => Copy&Paste ;-)

Share this post


Link to post
Share on other sites

Stimmt schon das ist mir im Nachhinein auch klar geworden.


Ich habe das nun anders gemacht so geht das fast nur ein verstehe ich da nicht, die erste Zeile die mit 1 gekennzeichnet wurde bleibt leer und am Ende sieht das alles so verschoben aus, also der Text der gehighlightet ist erscheint dann nach und nach von den Zeilen verschoben.


Hier mal der Code.

 

'; 

	$div=''; 
	$div.=''; 
	$div.= 'PHP - CODE - '.$anz_zeilen.' Codezeilen'; 
	$div.=''; 
	$div.=''; 
	if($anz_zeilen > 25){

		$div.='';

			$div.='';

				$zeile =0;

				for($zeile = 1; $zeile ';

			$div.='';

				$div.=$text;

			$div.='';

			$div.='';

			$div.='';

		$div.='';
	} 
	else {

		$div.='';

			$div.='';

				$zeile =0;

				for($zeile = 1; $zeile ';

			$div.='';

				$div.=$text;

			$div.='';

			$div.='';

			$div.='';

		$div.='';
	} 
	return $div; 
}
}
?>

 

Wie gesagt funktioniert soweit, falls die CSS noche benötigt wird poste ich die gern nach.


Hier noch mal ein Bild wie das jetzt ausschaut.


code_screen.JPG


Danke für weitere Hilfe. Mfg litter

Share this post


Link to post
Share on other sites
Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...