![]() |
[PHP] phpBB codes, aber etwas komplizierter...
Hi,
folgendes Problem plagt mich: ich habe text in der form
Code:
nochmal geblah
blabla
[code] hier ein quelltext
Code:
[/code]
und vielleicht noch ein quelltext
also praktisch vergleichbar mit einem forumspost hier in der dp ;) nun will ich den text, der jeweils zwischen den [code] teilen steht, aber vor der ausgabe noch durch eine funktion jagen, die ihn formatiert, um ihn danach formatiert an seiner alten stelle im originaltext auszugeben. und meinen copy&paste preg_replace phpBB php code find ich auch nimmer :cry: also im moment habe ich keine ahnung wie ich das nun machen soll... *MFG* |
Re: [PHP] phpBB codes, aber etwas komplizierter...
Hallo Meflin,
such mal in der includes/bbcode.php folgende Zeile:
Code:
Beim 2.0.13er ist dies Zeile 558. Die Funktion wird nur fuer Text zwischen code-Tags aufgerufen.
function bbencode_second_pass_code($text, $uid, $bbcode_tpl)
Ich hab mir die Funktion allerdings nicht genauer angesehn, aber das sollte sein, was du brauchst. Greetz alcaeus |
Re: [PHP] phpBB codes, aber etwas komplizierter...
hi alcaeus,
thx erstmal, aber ich sollte vielleicht dazu sagen dass ich das ausserhalb des phpbbs brauche ... ich meine nur so tags wie eben die phpBB codes ;) oder meinst du dass diese funktion genau das tut, was allerdings schlecht wäre, weil ich die schonmal angeschaut habe, und die ist ziemlich... heavy :? |
Re: [PHP] phpBB codes, aber etwas komplizierter...
soderle, inzwischen hab ihc mir was gebastelt:
Code:
nur es funktioniert nicht :(
$regex = "#\{code\}(.*?)\{/code\}#smiU";
preg_match_all($regex, $source, $codes); for ($i = 0; $i < count($codes[0]); $i++){ $geshi = new GeSHi($codes[1][$i], 'delphi', $path); $output = str_replace($codes[0][$i], $geshi->parse_code(), $output); echo $output; unset($geshi); } 1. erfolgt überhauptkeine ausgabe mehr. nichtmal der ungeparste originaltext wird ausgegeben, nein, es wird einfach kein text mehr ausgegeben. fehlermeldung erhalte ich allerdings auch keine :( 2. stimmt die regular expression so? [code ]...[/code] soll ersetzt werden (natürlich ohne leerzeichen ;) ) 3. check ich die preg_match_all net so ganz. $source enthält den text, der geparst werden soll, und $codes zur weiteren verwendung. stimmt das so? |
Re: [PHP] phpBB codes, aber etwas komplizierter...
Hi!
Ich weiß nicht ob du noch Hilfe brauchst, ein Fehler der mir in deiner Regex ausgefallen ist, dass du smiU angegeben hast, soweit ich mich erinnern kann steht das s dafür, das der Interpreter den String für eine single line halten soll und m steht für multi line, also in dem Falle doppelt gemoppelt ;) ich würd das m an deiner stelle rausnehmen. mfg phlux :hi: |
Re: [PHP] phpBB codes, aber etwas komplizierter...
$regex = "#\{code\}(.*?)\{/code\}#smiU";
Damit sucht er aber nach {Code} und nicht nach [Code] |
Re: [PHP] phpBB codes, aber etwas komplizierter...
Zitat:
die aktuelle regular expression lautet:
Delphi-Quellcode:
allerdings wird der [code] block nicht gefunden, count($code) ist 0. irgendwas an der expression stimmmt nicht...
$regex='/\[code\](.+)\[\/code\]/';
|
Re: [PHP] phpBB codes, aber etwas komplizierter...
|
Re: [PHP] phpBB codes, aber etwas komplizierter...
*Beide PHP Bücher hervorkram*
*Nachguck* *Denk* ... Damit geht's ... (getested)
Code:
';
<?
$text = 'Hier ist kein Code [code] hier aber schon ... function code($string) { return "
Code:
";
" . base64_encode ($string[1]) . "
} echo preg_replace_callback ("/\[code\](.*)\[\/code\]/i", "code", $text); ?>[/code] Ausgabe: Zitat:
|
Re: [PHP] phpBB codes, aber etwas komplizierter...
ich glaub ich spinn :wall: dein besipiel funzt, ja, nur übertragen auf meinen code:
Code:
funzt da wiederum garnix :cry: $source entspricht deinem $text. muss wohl irgendwie an den internen abläufen des geshi highlighters liegen nur ich versteh absolut nicht warum das nicht geht :(
function code($string)
{ $geshi = new GeSHi($string[1], $language, $path); $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS); //return base64_encode ($string[1]); return $geshi->parse_code(); } echo preg_replace_callback ("/\[code\](.*)\[\/code\]/i", "code", $source); |
Re: [PHP] phpBB codes, aber etwas komplizierter...
was ist denn das für eine geshi-Klasse???
Und die Funktion funktioniert auch, ja ? also
Code:
gibt das gewünschte aus ?
$text = array ("[ code]Mein Quellcode[ /code]", "Mein Quellcode");
echo code ($text) |
Re: [PHP] phpBB codes, aber etwas komplizierter...
geshi ist ein syntax highlighter, und nicht von mir ;)
wenn ich das einfach so verwende
Code:
funzt das auch, nur dass eben der gesamte $source text als quelltext dargestellt wird, nicht nur das, was zwischen den code blöcken steht. verwende ich obigen code, wird aber garnixmehr geparst :(
$geshi = new GeSHi($source, $language, $path);
$geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS); echo $geshi->parse_code(); |
Re: [PHP] phpBB codes, aber etwas komplizierter...
Kann es sein, dass $language und $path in der Funktion nicht bekannt sind, und deshalb die Klasse nicht korrekt erstellt wird ???
Mach erstmal eine Funktion, die den String parst (Aufruf oben) und wenn die geht, dann geht das auch mir preg_replace_callback ... |
Re: [PHP] phpBB codes, aber etwas komplizierter...
Zitat:
1. natürlich waren die variablen unbekannt. warum vergess ich das nur immer :Wall: 2. hat nach dem /i noch ein s gefehlt bei der expression, jetzt funzts :party: big merci :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz