• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

highlight_string und wordwrap

bosko

Member
Hallo,

ich arbeite z.Z. an einem Script was mir von einer PHP Datei den Quellcode auf der Page angezeigt wird.
diese Ausgabe habe ich per highlight_string gemacht und diese läuft.
Es wird die Datei Zeile für Zeile ausgelesen in einer foreach Schleife, so das ich jede Zeile Fomatieren kann.
Einige Textbausteine sind recht lang, weit über 200 Zeichen, nun möchte ich das ab einer Tabellen Breite von
500px die Zeile ein Zeilenumbruch setzt, ganz möglich ist das nicht, so dachte ich, man bekommt dies über
wordwrap hin. Leider klappt dies auch nicht, hat jemand dazu eine Lösung...

Hier mein Code:
PHP:
$source_code=explode("\n",str_replace(array("\r\n","\r"),"\n",$source_code));
foreach ( $source_code as $code_line)
{
     if (ereg('<\?(php)?[^[:graph:]]',$code_line))
         $formatted_code .= str_replace(array('<code>','</code>'),'',highlight_string($code_line,true));
     else
         $formatted_code .= ereg_replace('(<\?php )+','',str_replace(array('<code>','</code>'),'',highlight_string('<?php '.$code_line,true)));
}
 
wie sieht denn das css aus wo das problem auftritt? php code ist für diese frage eigentlich irrelevant.
 
ich habe versucht das css so anzupassen:

PHP:
if ( ereg('<\?(php)?[^[:graph:]]',$code_line))
					$formatted_code.='<td class="de1" style="word-wrap:break-word;text-wrap:normal;width:200px;">'.str_replace(array('<code>','</code>'),'',highlight_string($code_line,true)).'</td></tr>';
					else
					$formatted_code .='<td class="de1" style="word-wrap:break-word;text-wrap:normal;width:200px;">'.ereg_replace('(<\?php )+','',str_replace(array('<code>','</code>'),'',highlight_string('<?php '.$code_line,true))).'</td></tr>';

leider ohne erfolg
 
HTML:
		<style>
			#code_buttons{border-bottom:1px solid #ddd;background:#F7F7F7;text-align:left;padding:6px 8px 4px}
			#code_frame{background-color:#fff;color:#ddd;font-size:12px;overflow:auto;padding:0}
			#code_frame2{border:1px solid #ddd;border-radius:3px;margin:0 0 10px}
			#code_frame div{color:#333;font-family:Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace,serif}
			.text .de1, .text .de2 {-moz-user-select: text;-khtml-user-select: text;-webkit-user-select: text;-ms-user-select: text;user-select: text;
			margin:0; padding: 0 8px; background:none; vertical-align:top;color:#000;border-left: 1px solid #ddd; margin: 0 0 0 -7px; position: relative; background: #ffffff;}
			.text  {color:#ACACAC;}
			.text .imp {font-weight: bold; color: red;}
			.text li, .text .li1 {-moz-user-select: -moz-none;-khtml-user-select: none;-webkit-user-select: none;-ms-user-select: none;user-select: none;
			}
			.text .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}
			.text .ln-xtra, .text li.ln-xtra, .text div.ln-xtra {background:#FFFF88;}
			.text span.xtra { display:block; }
			ol{color:#ccc;background:#F7F7F7;margin: 0;padding: 0 0 0 5px;}
			li.ln-xtra .de1,li.ln-xtra .de2{background:#F8F8CE;}
			.de1:hover,.de2:hover{background:#F8F8F8}
			.h_640{display:none}
			.go_right{float:right;text-align:right}
		</style>


<table width="200px" border="0" cellspacing="1" cellpadding="2">
        <tr> 

    <td width="100%" nowrap>

<div id="code_frame2">
<div id="code_frame">
<div id="selectable">

<ol class="text">

<table style="font-size:12px;">
<tr><td style="text-align:right;width:25;padding-right:5px;">80</td><td class="de1" style="word-wrap:break-word;text-wrap:normal;width:200px;"><span style="color: #000000">
<span style="color: #0000BB">    </span><span style="color: #007700">if(</span><span style="color: #0000BB">$sortby</span><span style="color: #007700">!=</span><span style="color: #0000BB">$user_info</span><span style="color: #007700">[</span><span style="color: #DD0000">'sortby'</span><span style="color: #007700">] || </span><span style="color: #0000BB">$sortorder</span><span style="color: #007700">!=</span><span style="color: #0000BB">$user_info</span><span style="color: #007700">[</span><span style="color: #DD0000">'sortorder'</span><span style="color: #007700">]) </span><span style="color: #0000BB">$db</span><span style="color: #007700">-></span><span style="color: #0000BB">unbuffered_query</span><span style="color: #007700">(</span><span style="color: #DD0000">"UPDATE "</span><span style="color: #007700">.</span><span style="color: #0000BB">$db</span><span style="color: #007700">-></span><span style="color: #0000BB">getPrefix</span><span style="color: #007700">().</span><span style="color: #DD0000">"user SET sortby='"</span><span style="color: #007700">.</span><span style="color: #0000BB">addslashes</span><span style="color: #007700">(</span><span style="color: #0000BB">$sortby</span><span style="color: #007700">).</span><span style="color: #DD0000">"',sortorder='"</span><span style="color: #007700">.</span><span style="color: #0000BB">addslashes</span><span style="color: #007700">(</span><span style="color: #0000BB">$sortorder</span><span style="color: #007700">).</span><span style="color: #DD0000">"' WHERE user_id='"</span><span style="color: #007700">.</span><span style="color: #0000BB">$user_info</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_id'</span><span style="color: #007700">].</span><span style="color: #DD0000">"'"</span><span style="color: #007700">,</span><span style="color: #0000BB">1</span><span style="color: #007700">);</span>
</span>
</td></tr>
.........
.........

Dies ist der reine HTML Code ohne PHP....
Im Bild sieht man, das er überbreite hat und kein Zeilenumbruch macht
 

Anhänge

  • beispiel.png
    beispiel.png
    25,3 KB · Aufrufe: 3
sieht aber komisch aus. du kannst auf einer html seite html code zeigen ohne < und > zu escapen?
 
zum Teil konnte ich das Problem jetzt lösen, das in der highlight_string nach jedem </span> ein \n gesetzt wird, somit
lässt sich endlich die größe variieren, nun kommt aber Problem zwei:

HTML:
<span style="color: #000000">
<span style="color: #0000BB"></span>
<span style="color: #007700"><?</span>
<span style="color: #0000BB">php</span>
</span>

jetzt sieht der ganze Spaß so aus:

<? php

das bei jedem \n "Zeilenabsatz im Quellcode" ein Leerzeichen ensteht, im Quellcode sehe ich keins aber in der ausgabe ist es da,
wie bekommt man dies weg?
 
wäre das bei verschachtelten div's auch so? wie sieht das css für diesen bereich aus? mal im ff im firebug die node analysiert?
 
im FF firebug kann ich kein unterschied sehen zu wenn ich

HTML:
<span style="color: #000000"><span style="color: #0000BB"></span><span style="color: #007700"><?</span><span style="color: #0000BB">php</span></span>

es so schreibe, ist aber im Quellcode ein absatz drin kommt ein Leerzeichen?!?!?!?! Warum?!?!?!?
 
Zu deinem wordwrap-Problem: verwende innerhalb des <td>s ein <div>, dem du die Breite und die CSS-Angaben gibst, dann funktioniert das auch.
Zu dem Leerzeichen: verwende white-space: pre-line oder pre-wrap, dann werden die Zeilenumbrüche auch als Zeilenumbruch und nicht als Leerzeichen angezeigt.
 
Zu deinem wordwrap-Problem: verwende innerhalb des <td>s ein <div>, dem du die Breite und die CSS-Angaben gibst, dann funktioniert das auch.
Zu dem Leerzeichen: verwende white-space: pre-line oder pre-wrap, dann werden die Zeilenumbrüche auch als Zeilenumbruch und nicht als Leerzeichen angezeigt.

Danke für dein Tip aber leider nicht das gewünsche Resultat: im Qualltext zeilenümbrüche (\n) sollen nicht als Leerzeichen wiedergegeben werden.
 
Zurück
Oben