BBCodes CodeBox
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
beitrag
boxen
formatierung
funktion
kaputt mal
lsen
mist
netzen
rohzustand
schwupp
schnes durcheinander
sinnen
textausgabe
traum
umweg
variable
warnung
zeilenumbruch
zurck
zwischenzeit
-
hallo,
ich habe ein Problem und auch schon versucht es zu lösen, was mir misslang.
Ich wollte Fragen, wie man in Php eine Code Box als BB Code macht? Also wie hier bei Lima das das in Php Eingefärbt wird.
Ich bedanke mich jetzt schon mal ganz herzlich.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
garlian schrieb:
Dat sollte dir weiter helfen^^
http://www.traum-projekt.com/forum/sitemap/t-87734.html
Beitrag geaendert: 1.12.2006 15:01:45 von garlian
Danek, aber das habe ich nicht verstanden, kann mir jemand das bitte so erklären das ich das verstehe? oder den Code posten?
-
Ich persönlich amche es per Buffer.
Die Funktion highlight_string(); hat leider keinen return wert in dem Sinne, sondern gibt alles als Textausgabe zurück. Also wird alles da ausgegeben, wo die Funktion aufgerufen wird. Das ist selbstverständlich unerwünscht. Dehalb das Buffern:
Du ziehst den Angegebenen PHP Code mittels preg_match(); und dem richtigen Scuhmuster aus dem BB-Code. Dann machst du folgendes:
ob_start(); highlight_string($treffer); $code = ob_get_contents(); ob_end_clean();
Schwupp hast du den gehighlighteten Code inenrhalb der Variable $code und kannst damit weiterarbeiten. Das ganze arbeitet wie ein Netz, das die Ausgabe abfängt, speichert und löscht. Also bleibt sie nur noch in der Variable enthalten. So arbeitet zumindest meine Code funktion.. *zwinker*
PS: Ich hoffe ihr habt alles verstanden...>_< -
http://www.php.net/manual/en/function.highlight-string.php
highlight_string() kann seit PHP Version 4.2.0 einen String zurückgeben. Allerdings wurde die deutschsprachige Seite im PHP-Handbuch dazu bis heute nicht aktualisiert. Ein weiterer Grund, Englisch zu lernen ... (oder gleichauf eine vernünftige Script-Sprache umzusteigen ...^^).
Der Aufruf geschieht so:
$bunte_knete = highlight_string($normaler_code, TRUE);
Die Ausgabe des Befehls ist allerdings erst seit PHP5 halbwegs zu gebrauchen (siehe Infos im englischen PHP-Handbuch). Vorher ist das ausgegebene HTML grauenerregend und nicht XHTML-konform. Deshalb lohnt ein Blick auf den GeSHi ("generic syntax highlighter"). Der kann auch andere Quältexte bunt einfärben:
http://sourceforge.net/project/showfiles.php?group_id=114997 -
ok Danke an allle die versuchen mir zu helfen, aber ich verstehe es nicht, kann mir einer bitte einen Code geben wo wenn mein ein Text auf einer Veriable hat
hjkfsdahagfdsg+fh
ghsdfg
fsdghsdfg
[php]
$str="jhsdkf";
echo"hcfsdhf";
[/php]
dsfjdsf
ahsfdg
das das dann zurückgegeben wir auf einen String wo das zwischen [php] und [/php] richtig formatiert ist?
danke -
So jetzt einfach mal eins-fix-drei aus dem Kopf hingetippt:
$alt = 'Dein Text mit den Quellcodes[php]<'.'? printf("<b>x</b>") ?'.'>[/php] im Rohzustand';
$neu = preg_replace('/\[(php)\](.*?)\[\/\1\]/ie', '"<pre>".highlight_string("$2", TRUE)."</pre>"', $alt);
// zur Probe ausgeben:
print($neu);
...
Hoffentlich funktionierts ... -
alopex schrieb:
So jetzt einfach mal eins-fix-drei aus dem Kopf hingetippt:
$alt = 'Dein Text mit den Quellcodes[php]<'.'? printf('<b>x</b>') ?'.'>[/php] im Rohzustand';
$neu = preg_replace('/\[(php)\](.*?)\[\/\1\]/ie', ''<pre>'.highlight_string('$2', TRUE).'</pre>'', $alt);
// zur Probe ausgeben:
print($neu);
...
Hoffentlich funktionierts ...
Danke , aber klappt nicht. -
Doch, doch -- das klappt schon. Ich habs in der Zwischenzeit selbst getestet. Allerdings haut das Lima-Board die Formatierungen kaputt. Mal sehen, obs in der Code-Box ganz bleibt:
$alt = 'Dein Text mit den Quellcodes[php]printf(\'<b>x</b>\'); $a == $b[/php] im Rohzustand'; $neu = preg_replace('/\[(php)\](.*?)\[\/\1\]/ie', '"<pre>".highlight_string("$2", TRUE)."</pre>"', $alt); // zur Probe ausgeben: print($neu); exit();
Mist, da hauts auch nicht hin. Aber wenn du den Umweg über "Zitieren" gehst, und dir von dort den Quelltext holst, müsste es gehen.
Beitrag geaendert: 2.12.2006 15:25:50 von alopex -
es funktioniert auch, aber wenn ich es im Forum einbette, dann will es nicht.
und sobal ein Zeilenumbruch im Code ist wars das.
Beitrag geaendert: 2.12.2006 16:04:54 von samson -
Naja, ohne dein Forum (oder den Quellcode) zu sehen, kann man da nicht viel sagen. Gibt es Fehlermeldungen von PHP?
In meinen Scripts steht dazu am Anfang immer das hier:
error_reporting( E_ALL | ( defined('E_STRICT') ? E_STRICT : 0 ) );
@ini_set('display_startup_errors', TRUE);
@ini_set('display_errors', TRUE);
@ini_set('html_errors', TRUE);
Allerdings hagelt es dann meist Warnungen, wenn man das vorher nie beachtet hat ...
Oder wird irgendwas falsch formatiert?
Wenn du noch andere Formatierungen vorgenommen hast, kann das nämlich ein ganz schönes Durcheinander geben, wenn nachfolgende Formatierungsfunktionen vorhergehende überschreiben. Um das zu verhindern genügt str_replace() oder preg_replace() alleine nicht. In dem Fall müsstest du den Rohtext vorher in ein Array zerlegen, in dem die Quelltexte von den anderen Bereichen getrennt sind. Danach werden die anderen Bereiche formatiert. Und am Schluss wird alles hintereinander ausgegeben. Zumindest macht man das so theoretisch. Ein komplettes Beispielscript hab ich momentan nicht zur Hand ... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage