Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] phpBB codes, aber etwas komplizierter... (https://www.delphipraxis.net/41790-%5Bphp%5D-phpbb-codes-aber-etwas-komplizierter.html)

Meflin 8. Mär 2005 17:46


[PHP] phpBB codes, aber etwas komplizierter...
 
Hi,

folgendes Problem plagt mich: ich habe text in der form
Code:
blabla
[code] hier ein quelltext
nochmal geblah
Code:
 und vielleicht noch ein quelltext
[/code]
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*


alcaeus 8. Mär 2005 18:09

Re: [PHP] phpBB codes, aber etwas komplizierter...
 
Hallo Meflin,

such mal in der includes/bbcode.php folgende Zeile:

Code:
function bbencode_second_pass_code($text, $uid, $bbcode_tpl)
Beim 2.0.13er ist dies Zeile 558. Die Funktion wird nur fuer Text zwischen code-Tags aufgerufen.
Ich hab mir die Funktion allerdings nicht genauer angesehn, aber das sollte sein, was du brauchst.

Greetz
alcaeus

Meflin 8. Mär 2005 18:22

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

Meflin 9. Mär 2005 18:46

Re: [PHP] phpBB codes, aber etwas komplizierter...
 
soderle, inzwischen hab ihc mir was gebastelt:
Code:
 $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);
 }
nur es funktioniert nicht :(

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?


phlux 11. Mär 2005 12:39

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:

SubData 11. Mär 2005 13:01

Re: [PHP] phpBB codes, aber etwas komplizierter...
 
$regex = "#\{code\}(.*?)\{/code\}#smiU";

Damit sucht er aber nach {Code} und nicht nach [Code]

Meflin 11. Mär 2005 13:41

Re: [PHP] phpBB codes, aber etwas komplizierter...
 
Zitat:

Zitat von SubData
$regex = "#\{code\}(.*?)\{/code\}#smiU";

Damit sucht er aber nach {Code} und nicht nach [Code]

jep, stimmt natürlicj, da ist mir wohl die etwas falsche version reingerutscht :wall: trotzdem müsste dann der text einfach ausgegeben werden, der durchsuchte text löst sich aber irgendwie komplett in luft auf :?
die aktuelle regular expression lautet:
Delphi-Quellcode:
$regex='/\[code\](.+)\[\/code\]/';
allerdings wird der [code] block nicht gefunden, count($code) ist 0. irgendwas an der expression stimmmt nicht...


Meflin 12. Mär 2005 19:14

Re: [PHP] phpBB codes, aber etwas komplizierter...
 

jfheins 12. Mär 2005 22:16

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:

Hier ist kein Code [code]IGhpZXIgYWJlciBzY2hvbiAuLi4g[/code]

Meflin 13. Mär 2005 13:02

Re: [PHP] phpBB codes, aber etwas komplizierter...
 
ich glaub ich spinn :wall: dein besipiel funzt, ja, nur übertragen auf meinen code:
Code:
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);
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 :(


jfheins 13. Mär 2005 14:17

Re: [PHP] phpBB codes, aber etwas komplizierter...
 
was ist denn das für eine geshi-Klasse???

Und die Funktion funktioniert auch, ja ?

also
Code:
$text = array ("[ code]Mein Quellcode[ /code]", "Mein Quellcode");
echo code ($text)
gibt das gewünschte aus ?

Meflin 13. Mär 2005 14:31

Re: [PHP] phpBB codes, aber etwas komplizierter...
 
geshi ist ein syntax highlighter, und nicht von mir ;)
wenn ich das einfach so verwende
Code:
  $geshi = new GeSHi($source, $language, $path);
  $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
  echo $geshi->parse_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 :(


jfheins 13. Mär 2005 14:55

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 ...

Meflin 13. Mär 2005 15:16

Re: [PHP] phpBB codes, aber etwas komplizierter...
 
Zitat:

Zitat von jfheins
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 ...

*ruhig bin* *eckestell*
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 06:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz