code tags
stijnhau - 30/04/2007 16:12
Onbekend
hallo
ik heb code tags gemaakt enkel zijn ze niet helemaal goed.
ze geven voor iedere lijn een <br>(niet te lezen maar uitgevoerd)
het gaat pas fout al hij er de kleuren over zet eerde werkte het nog als het moest.
function kleurphp($code) {
ob_start();
$code = str_replace(" <?", "<?", $code);
$code = str_replace('\\"', '\"', $code);
$code = str_replace("<", "<", $code);
$code = str_replace(">", ">", $code);
$code = str_replace(""", "\"", $code);
$code = str_replace("&", "&", $code);
$code = trim($code);
highlight_string($code);
$code = ob_get_contents();
ob_end_clean();
$output = "<table border='0' width='375' cellspacing='0' cellpadding='0' align='center' bgcolor=#F8F8F8 style='border: solid 1px #000000'>";
$output .="<tr><td colspan='3' style='padding-left: 5'><small><u>Code:</u></small></td></tr>";
$output .="<tr><td valign='top' width='7%' style='padding-left: 5'><font color='cccccc'>";
$regels = explode("<br />", $code);
for($i=1; $i <= count($regels); $i++){
$output .= $i . "<br>";
}
$output .="</font></td><td align='left' valign='top' width='93%' colspan='2'>". $code ."</td></tr></table>";
return $output;
}
function kleurphp( $code ) {
$output = "<table border='0' width='375' cellspacing='0' cellpadding='0' align='center' bgcolor=#F8F8F8 style='border: solid 1px #000000'>" ;
$output .= "<tr><td colspan='3' style='padding-left: 5'><small><u>Code:</u></small></td></tr>" ;
$output .= "<tr><td valign='top' width='7%' s tyle='padding-left: 5'><font color='cccccc'>" ;
$regels = explode ( "<br />" , $code ) ;
for ( $i = 1 ; $i <= count ( $regels ) ; $i ++ ) { $output .= $i . "<br>" ;
}
$output .= "</font></td><td align='left' valign='top' width='93%' c olspan='2'>" . $code . "</td></tr></table>" ;
return $output ;
}
11 antwoorden
Gesponsorde links
delta_004 - 30/04/2007 16:18
Onbekend
Duidelijk AUB?
stijnhau - 30/04/2007 17:08
Onbekend
dat al ik $ code echo dat hij goed is tot waneer hij die kleuren doet.
dan zet hij voor idere lijn een enter.
timmie_loots - 01/05/2007 00:24
PHP gevorderde
Anders doe je $code = highlight_string($code, true); en niet die omslachtige manier met de output buffer.
stijnhau - 01/05/2007 09:16 (laatste wijziging 01/05/2007 21:38)
Onbekend
nu werkt hij en hij is safe.
het ebnkte probleem is dat hij alle code in regel 1 zet en dan regel 2 tot en met de laatse(hang van het geposte script af) leeg is.
function phphighlite_replace($code){
$code = str_replace(" <?", "<?", $code);
$code = str_replace('\\"', '\"', $code);
$code = str_replace("<", "<", $code);
$code = str_replace(">", ">", $code);
$code = str_replace(""", "\"", $code);
$code = str_replace("&", "&", $code);
$code = str_replace("<br />", "", $code);
$code = str_replace("print <<<ENDHTML ", "print <<<ENDHTML", $code);
$code = trim($code);
if(empty($code)) {
return "[code]
function phphighlite_replace( $code ) {
$code = str_replace ( "print <<<ENDHTML " , "print <<<ENDHTML" , $code ) ;
return "[code]
";
} else {
array_push($GLOBALS['phphighlite'], $code);
return "
".(count($GLOBALS['phphighlite'])-1)."
".(count($GLOBALS ['phphighlite'])-1)."
";
}
}
function phphighlite($id, $site){
$code = $GLOBALS['phphighlite'][$id];
$splitted = explode("\n", $code);
$grootte = count($splitted)+1;
ob_start();
highlight_string($code);
$buffer = ob_get_contents();
ob_end_clean();
$splitted2 = explode("\n", $buffer);
$return = "<table border='0' width='375' cellspacing='0' cellpadding='0' align='center' bgcolor=#F8F8F8 style='border: solid 1px #000000'>
<tr><td colspan='2' style='padding-left:5; background-color:#333333; color:#FFFFFF; width:375;'><small><u>Code:</u></small></td></tr>";
$i = 1;
while($i<$grootte) {
$return .= "<tr><td width='3%' style='padding-left: 5; background-color:#333333; color:#FFFFFF;'>";
$return .= $i;
$return .="</td><td align='left' width='97%'>".$splitted2[$i]."</td></tr>";
$i++;
}
$return .="</table>";
return $return;
}[/code]
Ibrahim - 01/05/2007 22:08 (laatste wijziging 01/05/2007 22:10)
PHP expert
$code = str_replace(" <?", "<?", $code);
$code = str_replace('\\"', '\"', $code);
$code = str_replace("<", "<", $code);
$code = str_replace(">", ">", $code);
$code = str_replace(""", "\"", $code);
$code = str_replace("&", "&", $code);
html_entity_decode(), trim() en addslashes, ooit van gehoord ?
en is niet slim om dit te doen, want zo kan iemand gewoon JS uitvoeren
santacrack - 01/05/2007 22:15
Nieuw lid
als je een <br /> wilt kan je de functie nl2br gebruiken
stijnhau - 02/05/2007 17:01
Onbekend
alles staat op meerdere lijne maar wel bij nummer 1
ikkedikke - 02/05/2007 20:47
PHP expert
volgens mij klopt er iets helemaaaal niet in die ubbfunctie:
eerst is over het geheel htmlentities heen gehaald, en vervolgens wil je dat bij de codes ongedaan maken ?
JBke - 02/05/2007 21:04
PHP gevorderde
Snap je UBB bedoeling ook niet echt maar ga eens op zoek er zijn zoveel mooie en goede UBB classes terug te vinden op het net persoonlijk gebruik ik deze zeer uitgebreide Class:
http://phphulp.nl/php/scripts/4/966 /
Grtz.
stijnhau - 02/05/2007 21:14
Onbekend
opgelost.
moest bij de laatse eclode niet de \ n doen mar wel <br />
Ibrahim - 02/05/2007 21:22
PHP expert
@JBke:
de maker van die class weet blijkbaar niet dat preg_replace arrays toestaat...?
Gesponsorde links
Dit onderwerp is gesloten .