[code] [/code]
leendert - 01/04/2005 18:23
HTML beginner
Ik heb nu dit om de code op het forum weer te geven.
$bericht = preg_replace("/\[code\](.+?)\[\/code\]/is",'<font color=#DF043E>\1</font>', $bericht);
maar hoe kan ik nou zorgen dat er een border om die code heen komt met een andere achtergrondkleur netzoals hier?
12 antwoorden
Gesponsorde links
vinTage - 01/04/2005 18:28 (laatste wijziging 01/04/2005 18:36)
Nieuw lid
echo $bericht in een css style of class
<style type="text/css">
<!--
.vakje {
background-color: #CCCCCC;
}
-->
</style>
<?php
echo "<table border='1'><tr><td class='vakje'>".$bericht."</td></tr></table>" ;
?>
<style type="text/css">
<!--
.vakje {
background-color: #CCCCCC;
}
-->
</style>
<?php
echo "<table border='1'><tr><td class='vakje'>" . $bericht . "</td></tr></table>" ; ?>
leendert - 01/04/2005 18:39
HTML beginner
nee dat kan niet omdat dan alles er in komt ook geen code.
Het is dus de bedoeling dat leden code en gewone tekst kunnen posten en code moet dan in een tabel en de gewone tekst niet netzo als hier
Tuinstoel - 01/04/2005 18:40
PHP expert
Gewoon je regular expression output wat aanpassen?
$bericht = preg_replace("/\[code\](.+?)\[\/code\]/is",'<table width="100%"><tr><td>\1</td></tr></table>', $bericht);
$bericht = preg_replace ( "/\[code\](.+?)\[\/code\]/is" , '<table width="100%"><tr><td>\1</td></tr></table>' , $bericht ) ;
leendert - 01/04/2005 19:02
HTML beginner
jepz maar hoe hightlight ik nou alleen wat er tussen de code staat?
b4nkr0bz0r - 02/04/2005 13:03 (laatste wijziging 02/04/2005 13:16)
PHP gevorderde
<?php
$bericht = preg_replace('_\[code\](.*?)\[\/code\]_ise', 'phphighlite('\\1')', $bericht);
?>
nu ga ik er vanuit dat je functie 'highlight' heet
zo gaat het volgens mij wel ?
Thomas - 02/04/2005 13:11
Moderator
Dat kun je ook in je reguliere expressie regelen, je kunt in reguliere expressies functies laten uitvoeren. Hiertoe voeg je een /e toe aan het einde van het patroon (e van e valueren), en in het "replace"-gedeelte zet je dan de functie highlight_string(), dus zoiets:
<?php
$text = "text en code in codeblokken ...";
echo preg_replace("/\[code\](.*)\[\/code\]/ise", "'<table border=\"1\"><tr><td>'.@highlight_string('\\1', 1).'</td></tr></table>'", $text);
?>
<?php
$text = "text en code in codeblokken ..." ;
echo preg_replace ( "/\[code\](.*)\[\/code\]/ise" , "'<table border=\" 1\" ><tr><td>'.@highlight_string('\\1 ', 1).'</td></tr></table>'" , $text ) ; ?>
Maar dan beginnen je problemen pas echt - backslashes die uit het niets (?) tevoorschijn komen, quotes en dubbelquotes.
Veel plezier ermee.
webstab - 02/04/2005 19:38 (laatste wijziging 02/04/2005 19:39)
PHP ver gevorderde
<?php
function kleurphp($bericht) {
$bericht = trim($bericht);
ob_start();
$bericht = str_replace(" <?", "<?", $bericht);
$bericht = str_replace("<br />", "\n", $bericht);
$bericht = str_replace("<br>", "\n", $bericht);
$bericht = str_replace('\\"', '\"', $bericht);
$bericht = str_replace("<", "<", $bericht);
$bericht = str_replace(">", ">", $bericht);
$bericht = str_replace(""", "\"", $bericht);
$bericht = str_replace("&", "&", $bericht);
$bericht = stripslashes($bericht);
highlight_string($bericht);
$bericht = ob_get_contents();
ob_end_clean();
$output = "<table border='0' width='375' cellspacing='0' cellpadding='0' align='center' style='border: solid 1px #000000'>";
$output .="<tr><td class=\"quotelijn\" valign='top' width='7%' style='padding-left: 2'><b>";
$regels = explode("<br />", $bericht);
for($i=1; $i <= count($regels); $i++){
$output .= $i . "<br>";
}
$output .="</b></td><td align='left' valign='top' nowrap width='93%' colspan='2' bgcolor=#FFFFFF>". $bericht ."</td></tr></table>";
$output = eregi_replace("(<code><font color=\"#000000\">\n)(.*)(</code>)","<font color=black>\\2</font>",$output);
return $output;
}
$bericht = preg_replace('_\[code\](.*?)\[/code\]_ise', "kleurphp(' \\1 ')",$bericht); ?>
<?php
function kleurphp( $bericht ) {
$bericht = trim ( $bericht ) ;
$output = "<table border='0' width='375' cellspacing='0' cellpadding='0' align='center' style='border: solid 1px #000000'>" ;
$output .= "<tr><td class=\" quotelijn\" valign='top' width='7%' s tyle='padding-left: 2'><b>" ;
$regels = explode ( "<br />" , $bericht ) ;
for ( $i = 1 ; $i <= count ( $regels ) ; $i ++ ) { $output .= $i . "<br>" ;
}
$output .= "</b></td><td align='left' valign='top' nowrap width='93%' c olspan='2' bgcolor=#FFFFFF>" . $bericht . "</td></tr></table>" ;
$output = eregi_replace ( "(<code><font color=\" #000000\" >\n )(.*)(</code>)" , "<font color=black>\\2 </font>" , $output ) ;
return $output ;
}
$bericht = preg_replace ( '_\[code\](.*?)\[/code\]_ise' , "kleurphp(' \\1 ')" , $bericht ) ; ?>
Het kleuren enz lukt perfect,maar het nummeren van de lijnen niet,hoe doe je dat?
webstab - 02/04/2005 20:38
PHP ver gevorderde
Geprobeerd,maar ik snap niet goed hoe ik dat er moet inpassen?
thyssimonis - 03/04/2005 11:53
PHP interesse
Mij lukt het ook niet, zoek er ook naar^^
leendertW - 10/04/2005 18:27 (laatste wijziging 10/04/2005 18:41)
PHP beginner
@webstab
ik gebruik hem nu van jouw (die code)
maar die werkt perfect(y)
Alleen worden de regels niet afgekapt (ga ik er zelf in doen )
bedankt.
[edit]
hij telt niet altijd alle regels:S, als je dat probleem hebt opgelost hoor k het graag:D
MaZZie - 10/04/2005 18:49 (laatste wijziging 10/04/2005 18:51)
PHP interesse
$bericht = preg_replace("/\[code\](.+?)\[\/code\]/is",'<font color=#DF043E><blockquote><table><tr><td bgcolor=\"#333333\" border=\"1\">\1</td></tr></table></blockquote></font>', $bericht);
probeer dit eens (niet getest)
[edit]
Ow was nog een pagina waar antwoord al was gegeven:$
Gesponsorde links
Dit onderwerp is gesloten .