PHP-Code: $array = explode("code",$row3->message); $code = $array[1]; $code = highlight_string("$code"); $message = $array[0]."".$code."".$array[2];
gibt nur fehler
PHP-Code: $message='Ich bin ein Text mit einem Codeblock: [phpcode]<?php phpinfo(); ?>[/phpcode]!<br /><br />'; preg_match_all('#\[phpcode\](.*)\[/phpcode\]#Usi',$message,$matches); foreach(array_unique($matches[1]) as $code){ $message=str_replace('[phpcode]'.$code.'[/phpcode]','<div style="border:1px solid #f00;max-height:200px;overflow:scroll;width:600px;">'.highlight_string($code).'</div>',$message); }
Achtung ungetestet! Hab ich jetzt mal so direkt hier reingeschrieben.
P.S.: Willst du das "PHP Profi" wirklich da stehen lassen?
lol, vor 5 min bin ich auch auf so was gekommen xD
PHP-Code: $message = $row3->message; $message = preg_replace('#\[code\](.*)\[/code\]#isU', highlight_string("$1"), $message); return $message;
aber geht ned gibt $1 aus xD
zu deinem, es gibt in dem code block nur eine 1 aus, und anders ist die auch ned xD
Kannst du nochmal meinen überarbeiteten Code testen? Habe den Text editiert.
wird ebenfals eine 1 angezeigt
Ah, ich verstehe. highlight_string() liefert das Ergebnis gleich aus (return). Versuche mal den zusätzlichen Parameter false. Wenn das nicht hilft, musst du dir deine eigene Highlight-Methode schreiben. Oder schau doch mal, wie es MyBB bei [ php ] macht.
Oder verwende dies:
PHP-Code: <?php
function printCode($source_code) {
if (is_array($source_code)) return false; $source_code = explode("\n", str_replace(array("\r\n", "\r"), "\n", $source_code)); $line_count = 1;
foreach ($source_code as $code_line) { $formatted_code .= '<tr><td>'.$line_count.'</td>'; $line_count++; if (ereg('<\?(php)?[^[:graph:]]', $code_line)) $formatted_code .= '<td>'. str_replace(array('<code>', '</code>'), '', highlight_string($code_line, true)).'</td></tr>'; else $formatted_code .= '<td>'.ereg_replace('(<\?php )+', '', str_replace(array('<code>', '</code>'), '', highlight_string('<?php '.$code_line, true))).'</td></tr>'; }
return '<table style="font: 1em Consolas, \'andale mono\', \'monotype.com\', \'lucida console\', monospace;">'.$formatted_code.'</table>'; }
$message='Ich bin ein Text mit einem Codeblock:<br />[phpcode]<?php phpinfo(); ?>[/phpcode]<br /><br />Und nun noch ein laengerer Codeblock:<br /><br />[phpcode]<?php phpinfo(); ?> <?php phpinfo(); ?> <?php phpinfo(); ?> <?php phpinfo(); ?> <?php phpinfo(); ?> <?php phpinfo(); ?> <?php phpinfo(); ?> <?php phpinfo(); ?> <?php phpinfo(); ?> <?php phpinfo(); ?> <?php phpinfo(); ?> <?php phpinfo(); ?>[/phpcode]'; preg_match_all('#\[phpcode\](.*)\[/phpcode\]#Usi',$message,$matches); foreach(array_unique($matches[1]) as $code){ $message=str_replace('[phpcode]'.$code.'[/phpcode]','<div style="border:1px solid #f00;max-height:200px;overflow:scroll;width:600px;">'.printCode($code).'</div>',$message); } echo $message;
P.S.: Die Funktion printCode() habe ich von php.net... Ein "Profi" weiß, wo er nachschauen kann...
PHP-Code: 1 | Marti95. | 01.01.1970 - 01:00 Ich bin ein Text mit einem Codeblock: 1 <?php phpinfo(); ?>
Und nun noch ein laengerer Codeblock:
1 <?php phpinfo(); ?> 2 <?php phpinfo(); ?> 3 <?php phpinfo(); ?> 4 <?php phpinfo(); ?> 5 <?php phpinfo(); ?> 6 <?php phpinfo(); ?> 7 <?php phpinfo(); ?> 8 <?php phpinfo(); ?> 9 <?php phpinfo(); ?> 10 <?php phpinfo(); ?> 11 <?php phpinfo(); ?> 12 <?php phpinfo(); ?>
Fatal error: Cannot redeclare printcode() (previously declared in D:\xampp\htdocs\bg\w1\user.php:390) in D:\xampp\htdocs\bg\w1\user.php on line 390
so wird es angezeigt, es sollte 4 ausgaben geben.
Die Codes werden in den Boxen angezeigt!
Schau mal hier: http://www.php-fehlermeldungen.de/topic58.html
Ich habe meinen Code aus #16 jetzt einfach mal in einer Datei abgespeichert und es funktioniert so wie es soll: http://demo.wundi.net/code.php
Wo ist das Problem?
war mein fehler xD
habe die funktion nichzt zuoberst gehabt...
Jetzt geht es, Danke
//EDIT:
Nun hat es ja auf der Seite so zahlen
1
2
3
4
wie mache ich, das diese nicht mitkopiert werden?
gar nicht, außer du ersetzt die Tabellen durch eine Liste.
Übrigens funktioniert es auch so:
PHP-Code: <style type="text/css"> .code{ border:1px solid #888; width:600px; } .codeheader{ background-color:#ccc; padding:5px; font-style:italic; } .codecontent{ max-height:150px; overflow:auto; background-color:#eee; padding:5px; } </style>
<?php
$message='Ich bin ein Text mit einem Codeblock: [phpcode]<?php phpinfo(); ?> <?php phpinfo(); ?> <?php phpinfo(); ?> <?php phpinfo(); ?> <?php phpinfo(); ?> <?php phpinfo(); ?> <?php phpinfo(); ?> <?php phpinfo(); ?> <?php phpinfo(); ?> <?php phpinfo(); ?> <?php phpinfo(); ?> <?php phpinfo(); ?>[/phpcode]<br/>Und noch eine weitere Zeile<br/>';
preg_match_all('#\[phpcode\](.*)\[/phpcode\]#Usi',$message,$matches); foreach(array_unique($matches[1]) as $code){ $message=str_replace('[phpcode]'.$code.'[/phpcode]','<div class="code"><div class="codeheader">PHP-Code</div><div class="codecontent">'.highlight_string($code,true).'</div></div>',$message); }
echo $message;
?>
Das Ergebnis siehst du hier: http://demo.wundi.net/code.php
|