PHP Syntax Highlighter BBCode ändern?

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
0lli

PHP Syntax Highlighter BBCode ändern?

Beitrag von 0lli »

Hi
ich habe mir das PHP Syntax Highlighter BBCode runtergeladen und es funzt auch wunderbar nur möchte ich es nicht für php nutzen sonndern für andere prog sprachen so auch das funzt super nur wird immer ein <?php vor den und ein ?> nach dem post gemacht kann ich das irgendwie wech bekommen????

ich habe in dem hack selber mal nachgeschaut und habe diese zeile gefunden
{
$code_start_html = $bbcode_tpl['php_open'];
$code_end_html = $bbcode_tpl['php_close'];
$matches = array();
$match_count = preg_match_all("#\[php:1:$uid\](.*?)\[/php:1:$uid\]#si", $text, $matches);

for ($i = 0; $i < $match_count; $i++)
{
$before_replace = $matches[1][$i];
$after_replace = trim($matches[1][$i]);
$str_to_match = "[php:1:$uid]" . $before_replace . "[/php:1:$uid]";
$replacement = $code_start_html;
$after_replace = str_replace('<', '<', $after_replace);
$after_replace = str_replace('>', '>', $after_replace);
$after_replace = str_replace('&', '&', $after_replace);
$added = FALSE;
if (preg_match('/^<\?.*?\?>$/si', $after_replace) <= 0)
{
$after_replace = "<?php $after_replace ?>"; $added = TRUE;
}
if(strcmp('4.2.0', phpversion()) > 0)
{
ob_start();
highlight_string($after_replace);
$after_replace = ob_get_contents();
ob_end_clean();
}
else
{
$after_replace = highlight_string($after_replace, TRUE);
}
if ($added == TRUE)
{
$after_replace = str_replace('<font color="#0000BB"><?php ', '<font color="#0000BB">', $after_replace);
$after_replace = str_replace('<font color="#0000BB">?></font>', '', $after_replace);
}
$after_replace = preg_replace('/<font color="(.*?)">/si', '<span style="color: \\1;">', $after_replace);
$after_replace = str_replace('</font>', '</span>', $after_replace);
$after_replace = str_replace("\n", '', $after_replace);
$replacement .= $after_replace;
$replacement .= $code_end_html;

$text = str_replace($str_to_match, $replacement, $text);
}

$text = str_replace("[php:$uid]", $code_start_html, $text);
$text = str_replace("[/php:$uid]", $code_end_html, $text);

return $text;
}

wenn ich nun aus
$after_replace = "<?php $after_replace ?>";
einfach das
$after_replace = "$after_replace";
mache wird das Highlightning net mehr angezeigt sondern nur als würde ich nen zitat schreiben
(das wäre ja auch zu einfach gewesen) :cry:

kann mir jemand sagen wie ich das ändern kann??
also das das <?php vor und das ?> nach dem post nicht automatisch mit in das Highlightning mit eingefügt wird aber das das farbige Highlightning nicht verloren geht????

vielen dank im vorraus
0lli
0lli

Beitrag von 0lli »

kann mir dazu niemand helfen???
pls!
0lli

Beitrag von 0lli »

das kann doch für die spezies hier net so schwer sein????

bitte um antwort warte immernoch geduldig
Benutzeravatar
itst
Ehrenadmin
Beiträge: 7418
Registriert: 21.08.2001 02:00
Wohnort: Büttelborn bei Darmstadt
Kontaktdaten:

Beitrag von itst »

Poste bitte mal den Link zu dem Mod.
Sascha A. Carlin,
phpBB.de Ehrenadministrator
:o
0lli

Beitrag von 0lli »

hier der link
http://www.phpbbhacks.com/viewhack.php?id=181

vielen dank schon mal im vorraus
0lli
Benutzeravatar
itst
Ehrenadmin
Beiträge: 7418
Registriert: 21.08.2001 02:00
Wohnort: Büttelborn bei Darmstadt
Kontaktdaten:

Beitrag von itst »

In die posting_body.tpl muss man ja diese beiden Zeilen einfügen:

Code: Alles auswählen

bbtags = new Array('[b]','[/b]','[i]','[/i]','[u]','[/u]','[quote]','[/quote]','[code]','
','
  • ','
','
  • ','
','[img]','[/img]','','','[php]<?php\n','\n
[/php]'); <!-- PHP MOD //-->
[/code]
Nehme da das '<?php' nach '[php] heraus.

Ein '?>' konnte ich nirgendsfinden...
Sascha A. Carlin,
phpBB.de Ehrenadministrator
:o
Elo
Mitglied
Beiträge: 318
Registriert: 04.11.2002 17:44

Beitrag von Elo »

Hallo Olli,

IMO wird das <? bzw <?php am Anfang und das ?> am Ende von der PHP-Funktion highlight_string benötigt damit diese weiss, dass der dazwischenliegende Code gehighlightet :grin: werden soll.

Was Du allerdings machen kannst, ist, die Ausgabe des BBCodes nachzubearbeiten.

Über der Zeile:

Code: Alles auswählen

 return $text;
füge diese Zeile ein:

Code: Alles auswählen

$text = preg_replace("#<\?(php|)(.*?)\?>#si", "\\2", $text);
Elo wars
Elo
Mitglied
Beiträge: 318
Registriert: 04.11.2002 17:44

Beitrag von Elo »

Diese Zeilen:

Code: Alles auswählen

 if (preg_match('/^<\?.*?\?>$/si', $after_replace) <= 0)
{
$after_replace = "<?php $after_replace ?>"; $added = TRUE;
}
tuen nicht anderes als abzufragen ob am Anfang ein <? und am Ende ein ?> steht. Ist dem nicht so wird dies vom Script nachgeholt.

Die Zeile welche Du rot markiert hattest $after_replace = "<?php $after_replace ?>"; ist genau die welche die fehlenden <? und ?> einfügt.

Danach wird alles der PHP-Funktion "highlight_string" zum highlighten übergeben.

Elo nochmal
Gast

Beitrag von Gast »

vielen dank an euch für die antwort ich werde es gleich morgen früh testen melde mich dann obs geklappt hat oder net :lol:

freu mich riesig das mir doch noch jemand hilft
schöne grüsse
0lli
Benutzeravatar
saerdnaer
Ehemaliges Teammitglied
Beiträge: 4268
Registriert: 21.04.2001 02:00

Beitrag von saerdnaer »

suche:

Code: Alles auswählen

if(strcmp('4.2.0', phpversion()) > 0) 
{ 
ob_start(); 
highlight_string($after_replace); 
$after_replace = ob_get_contents(); 
ob_end_clean(); 
} 
else 
{ 
$after_replace = highlight_string($after_replace, TRUE); 
} 
danach einfügen:

Code: Alles auswählen

$pos = strpos($after_replace, ' ');
if ( $pos != 0 && $pos < 6 )
{
  $after_replace = substr($after_replace, $pos, -2);
}
ist zwar ungetestet sollte aber funktionieren
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“