Ik gebruik Geshi (http://geshi.org/) om PHP code te highlighten, nu heb ik er een stukje aan toegevoegd om tekst tussen [ php] en [ /php] tags te highlighten, dit werkt prima.
Nu heb ik er de volgende CSS aangehangen om ervoor te zorgen dat de code niet buiten de layout gaat zitten:
Nu valt dus alle inhoud van het bericht onder de class .sourceCode, wat dus niet de bedoeling is, alleen de inhoud tussen de [ php] en [ /php] tekst moet in die class komen.
Op de volgende manier highlight ik de code m.b.v. Geshi:
Op regel 33 voeg ik dus die <div class='sourceCode'> toe, wat er dus voor zorgt dat de gehele inhoud van $postContent; binnen die css class komt.
Heb al een hoop dingen geprobeerd om die <div> in de Geshi parser zelf alvast te openen, maar alles komt op hetzelfde uit.
Is het op één of andere manier mogelijk om de tekst die tussen [ php] en [ /php] staat te pakken en dat te highlighten en gebruik laten maken van die css class.
Voorbeeldje:

Bij voorbaat dank,
Edit: Dus net zoals PHP code wordt weergegeven hier op GoT.
Nu heb ik er de volgende CSS aangehangen om ervoor te zorgen dat de code niet buiten de layout gaat zitten:
code:
1
2
3
4
5
6
7
8
9
| .sourceCode{
padding: 0px;
width: 440px;
height: 200px;
overflow-x: scroll;
overflow-y: scroll;
font-size: 12px;
display: block;
} |
Nu valt dus alle inhoud van het bericht onder de class .sourceCode, wat dus niet de bedoeling is, alleen de inhoud tussen de [ php] en [ /php] tekst moet in die class komen.
Op de volgende manier highlight ik de code m.b.v. Geshi:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| $postContent = $cmtResult['content']; // Regex for the [ php] & [ /php] tags. $regex = '/\[php\](.*?)\[\/php\]/si'; // Grab the php code we want to highlight in $matcher[1] preg_match_all($regex, $postContent, $matches); // now we have to loop through all our matches because we can have multiple php brackets in our post $cnt = count($matches[1]); for($i=0; $i < $cnt; $i++) { // Allow HTML again, otherwise " will be " etc. $parseCode = html_entity_decode($matches[1][$i]); // Call GeSHi. $geshi = new GeSHi($parseCode, 'PHP'); // Set code style. $geshi->code_style = "font-size:12px;"; // Header text. $geshi->set_header_content("<div style='font-size:12px;'>PHP Code</div>"); // Enable line numbers. $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS); // Parse the code. $phpcode = $geshi->parse_code(); // Replace the content, display below. $postContent = str_replace($matches[0][$i], $phpcode , "<div class='sourceCode'>" . $postContent . "</div>"); } |
Op regel 33 voeg ik dus die <div class='sourceCode'> toe, wat er dus voor zorgt dat de gehele inhoud van $postContent; binnen die css class komt.
Heb al een hoop dingen geprobeerd om die <div> in de Geshi parser zelf alvast te openen, maar alles komt op hetzelfde uit.
Is het op één of andere manier mogelijk om de tekst die tussen [ php] en [ /php] staat te pakken en dat te highlighten en gebruik laten maken van die css class.
Voorbeeldje:

Bij voorbaat dank,
Edit: Dus net zoals PHP code wordt weergegeven hier op GoT.