Ich werde mal versuchen einige meiner Einträge auf Englisch zu verfassen - um in der Übung zu bleiben.
I like to write about programming, and since I am using Wordpress and writing plugins for it, PHP is the language of choice when it comes to blog-related development.
I wanted to put my PHP-Code into my entries and I wanted it to look nice, which means mono-spaced font and syntax highlighting. The first one was fairly easy to archieve by just changing the CSS. Whenever I put code into my blog, I write it between <pre> and </pre>, so I just had to change the CSS for the pre-element:
pre { height: auto; overflow: auto; color: #EEE; padding: 5px; margin: 10px; scroll: auto; font-family: Courier New, monospace; font-weight: bold; white-space: pre; font-size: 9pt; line-height: 10pt; }
The highlighting however must be done on the server side by PHP, so I had to write another (in fact two) filter-function:
< ?phpfunction highlightCode($content) { if (false === strpos($content, '<pre>')) { return $content; }
$content = preg_replace_callback( '|\<pre\>(.*?)\</pre\>|is', 'highlightCodeCallback', $content );
return $content; }
function highlightCodeCallback($matches) { if (false === strpos($matches[0], '< ?php')) { return $matches[0]; } $code = $matches[0]; $code = preg_replace( '|\<code\>\s*\</code\>|is', '/*§§BR§§*/', $code ); $code = strip_tags($code); // Wordpress adds the space when saving $code = str_replace('< ?php', '<?php', $code); $code = highlight_string($code, true); $code = str_replace('/*§§BR§§*/', "\n\n", $code); $code = htmlspecialchars_decode($code); $code = str_replace('<?php', '<?php', $code);
return '<pre>'. $code .'</pre>'; }