Seite 1 von 1

PHP Syntax Highlighter BBCode ändern?

Verfasst: 25.11.2003 20:31
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

Verfasst: 26.11.2003 16:05
von 0lli
kann mir dazu niemand helfen???
pls!

Verfasst: 17.12.2003 08:02
von 0lli
das kann doch für die spezies hier net so schwer sein????

bitte um antwort warte immernoch geduldig

Verfasst: 17.12.2003 08:11
von itst
Poste bitte mal den Link zu dem Mod.

Verfasst: 18.12.2003 19:46
von 0lli
hier der link
http://www.phpbbhacks.com/viewhack.php?id=181

vielen dank schon mal im vorraus
0lli

Verfasst: 18.12.2003 21:29
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...

Verfasst: 18.12.2003 21:31
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

Verfasst: 18.12.2003 21:54
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

Verfasst: 19.12.2003 02:24
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

Verfasst: 19.12.2003 15:25
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