hi @all,
ich will in meinem gbook tags machen für schrift- und codeformatierung wie z.b. auch hier im forum. dazu benutze ich zurzeit folgenden code:
Code: In Zwischenablage kopieren (nur IE)
jetzt will ich allerdings ein syntaxhighlighting einbauen. dazu muss ich den code einer funktion übergeben, die dann den formatierten code zurückgibt. allerdings weiß ich nicht, wie ich das anstellen soll, weil ich dazu ja eine backreferenz auf den eingegebenen code brauche, um ihn der funktion zu übergeben. am besten wäre natürlich etwas wie
Code: In Zwischenablage kopieren (nur IE)
was aber natürlich nicht gehen kann.
ich hoffe, jemand kann mir helfen
Gruß,
Niklas
Antworten
Zitat:
was aber natürlich nicht gehen kann.
Warum nicht? Noch nie was vom Modifier "e" gelesen?
2.
nein ich bin noch ziemlicher anfänger in php. kannst du eventuell mal ein beispiel schreiben?
3.
Lies doch einfach mal die Doku, oder!?
http://de2.php.net/manual/de/function.preg-replace.php
4.
soweit war ich auch schon.
mein code sieht jetzt so aus:
Code: In Zwischenablage kopieren (nur IE)
allerdings wandelt php meinen schönen html-code beim ersetzen um, sodass nur sowas rauskommt:
Code: In Zwischenablage kopieren (nur IE)
sieht so aus, wie wenn nach dem eretzen noch einmal htmlspecialchars aufgerufen würde, was aber nicht der fall ist.
Gruß,
Niklas
5.
Ich weiß ja nicht, was du dem str variablen gefüttert hast, jedenfalls bringt dein code
[PHP]
<?php
function highlight_vb($title, $code) {
return '<div class="codeBefore">'.$title.'</div><div class="codeVB">'.highlight_code_syn('vbnet', $code).'</div>';
}
function highlight_cs($title, $code) {
return '<div class="codeBefore">'.$title.'</div><div class="codeCS">'.highlight_code_syn('cs', $code).'</div>';
}
$suche = array(
'@\[vb\](.*)\[/vb\]@Uie',
'@\[cs\](.*)\[/cs\]@Uie');
$ersetze = array(
'highlight_vb("Code:", "$1")',
'highlight_cs("Code:", "$1")');
$str = preg_replace($suche, $ersetze, $str);
?>
[/PHP]
die gewünschten Ergebnisse..
[PHP]
/*function highlight_code_syn ($title, $code) {
return ($code);
}*/
$str = '<div class="test">[vb]solvemyproblems()[/vb] ist keine vb Funktion, [cs]CS aber auch nicht[/cs]</div>';
[/PHP]
Code: In Zwischenablage kopieren (nur IE)
6.
"Ich bin ein ziemlicher Anfänger" psst nicht ins Forum "PHP für Fortgeschrittene", zumal die Frage das ja nicht hergibt.