Highlight code in textarea
Ik maak een script-editor voor mijn site. Nu zit ik met een probleem. Ik wil graag een highlighted code in dat textveldje. Is dat mogelijk. Het is mij alleen nog gelukt om een highlighted code te maken buiten een textveld of de code in het textveld, zonder highlight. Kan iemand mij AUB helpen???
Code (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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?php
function phphighlite($code) {
//doe niks aan highlighten indien PHP4
if (floor(phpversion())<5) {
$return = $code;
} else {
$code = str_replace("<br>", "", $code);
$code = str_replace("<br />", "", $code);
$code = str_replace(">", ">", $code);
$code = str_replace("<", "<", $code);
$code = str_replace("&", "&", $code);
$code = str_replace('$', '\$', $code);
$code = str_replace('\n', '\\\\n', $code);
$code = str_replace('\r', '\\\\r', $code);
$code = str_replace('\t', '\\\\t', $code);
$code = stripslashes($code);
if (!strpos($code,"<?") and substr($code,0,2)!="<?") {
$code="<?\n".trim($code)."\n?>";
$addedtags=1;
}
ob_start();
$oldlevel=error_reporting(0);
highlight_string($code);
error_reporting($oldlevel);
$code = ob_get_contents();
ob_end_clean();
$a = explode("<br />" , $code);
$b = explode("\n" , $code);
$c = count($a);
$d = count($b);
$data = $c + $d;
$return .= "<table cellspacing=\"0\" cellpadding=\"3\" border=\"0\" width=\"100%\" bgcolor=\"#D6D6D6\">\n";
$return .= "<tr>\n";
$return .= "<td valign=\"middle\"><b>Code</b></td>\n";
$return .= "</tr>\n";
$return .= "</table>\n";
$return .= "<!-- code table -->\n";
$return .= "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\">\n";
$return .= "<tr>\n";
$return .= "<td>\n";
$return .= "<table cellspacing=\"0\" cellpadding=\"3\" border=\"0\" width=\"100%\" bgcolor=\"#D6D6D6\" style=\"border-left: 1px solid #D6D6D6; border-right: 1px solid #D6D6D6; border-bottom: 1px solid #D6D6D6;\">\n";
$return .= "<tr>\n";
$return .= "<td width=\"1\" valign=\"top\" align=\"left\">\n";
for($i = "1"; $i < $data; $i++)
{
$return .= $i."<br />";
}
$return .= "</td>\n";
$return .= "<td valign=\"top\" bgcolor=\"#FFFFFF\">\n";
$return .= "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\" style=\"table-layout: fixed;\">\n";
$return .= "<tr>\n";
$return .= "<td nowrap>\n";
$return .= "<code style=\"font-family: Courier New\">\n";
$return .= "".$code."\n";
$return .= "</code>\n";
$return .= "</td>\n";
$return .= "</tr>\n";
$return .= "</table>\n";
$return .= "</td></tr></table>\n";
$return .= "</td></tr></table><br />\n";
if ($addedtags) {
$openingpos = strpos($buffer,"<?");
$closingpos = strrpos($buffer, "?");
$return=substr($return, 0, $openingpos).substr($return, $openingpos+5, $closingpos-($openingpos+5)).substr($return, $closingpos+5);
}
$return = str_replace(""", "\"", $return);
}
return $return;
}
?>
Je wilt een hightlight blokje hebben dus, zoals wat hierboven staat?
function phphighlite($code) {
//doe niks aan highlighten indien PHP4
if (floor(phpversion())<5) {
$return = $code;
} else {
$code = str_replace("<br>", "", $code);
$code = str_replace("<br />", "", $code);
$code = str_replace(">", ">", $code);
$code = str_replace("<", "<", $code);
$code = str_replace("&", "&", $code);
$code = str_replace('$', '\$', $code);
$code = str_replace('\n', '\\\\n', $code);
$code = str_replace('\r', '\\\\r', $code);
$code = str_replace('\t', '\\\\t', $code);
$code = stripslashes($code);
if (!strpos($code,"<?") and substr($code,0,2)!="<?") {
$code="<?\n".trim($code)."\n?>";
$addedtags=1;
}
ob_start();
$oldlevel=error_reporting(0);
highlight_string($code);
error_reporting($oldlevel);
$code = ob_get_contents();
ob_end_clean();
$a = explode("<br />" , $code);
$b = explode("\n" , $code);
$c = count($a);
$d = count($b);
$data = $c + $d;
$return .= "<table cellspacing=\"0\" cellpadding=\"3\" border=\"0\" width=\"100%\" bgcolor=\"#D6D6D6\">\n";
$return .= "<tr>\n";
$return .= "<td valign=\"middle\"><b>Code</b></td>\n";
$return .= "</tr>\n";
$return .= "</table>\n";
$return .= "<!-- code table -->\n";
$return .= "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\">\n";
$return .= "<tr>\n";
$return .= "<td>\n";
$return .= "<table cellspacing=\"0\" cellpadding=\"3\" border=\"0\" width=\"100%\" bgcolor=\"#D6D6D6\" style=\"border-left: 1px solid #D6D6D6; border-right: 1px solid #D6D6D6; border-bottom: 1px solid #D6D6D6;\">\n";
$return .= "<tr>\n";
$return .= "<td width=\"1\" valign=\"top\" align=\"left\">\n";
for($i = "1"; $i < $data; $i++)
{
$return .= $i."<br />";
}
$return .= "</td>\n";
$return .= "<td valign=\"top\" bgcolor=\"#FFFFFF\">\n";
$return .= "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\" style=\"table-layout: fixed;\">\n";
$return .= "<tr>\n";
$return .= "<td nowrap>\n";
$return .= "<code style=\"font-family: Courier New\">\n";
$return .= "".$code."\n";
$return .= "</code>\n";
$return .= "</td>\n";
$return .= "</tr>\n";
$return .= "</table>\n";
$return .= "</td></tr></table>\n";
$return .= "</td></tr></table><br />\n";
if ($addedtags) {
$openingpos = strpos($buffer,"<?");
$closingpos = strrpos($buffer, "?");
$return=substr($return, 0, $openingpos).substr($return, $openingpos+5, $closingpos-($openingpos+5)).substr($return, $closingpos+5);
}
$return = str_replace(""", "\"", $return);
}
return $return;
}
?>
Je wilt een hightlight blokje hebben dus, zoals wat hierboven staat?
Gewijzigd op 01/01/1970 01:00:00 door - Ariën -
Ja een highlight blokje, maar ik moet er wel in kunnen veranderen (het is nu eenmaal een code-editor)
Betweter :} Dan heb jij even pech? Hij werkt goed in IE en daar heb ik hem persoonlijk voor nodig. De starter van dit topic heeft daarnaast niets over Opera gezegd dus de kans is groot dat hij er wel iets aan heeft.
Ontopic: voor wie het ook wil gebruiken: Textarea's die zijn veranderd in een 'Codepress-editor' geven geen POST waarde meer mee als je op submit drukt. Je kunt de content dus niet zomaar opslaan. Ik heb dit opgelost door de submit button van mijn edit-formulier een onclick mee te geven:
<input onclick="namevanjetextarea.toggleEditor()" type="submit" value="Save">
Hij veranderd hierdoor de Codepress-editor eerst in een normale textarea en verzend pas daarna het formulier.
@Karl, Ontopic: voor wie het ook wil gebruiken: Textarea's die zijn veranderd in een 'Codepress-editor' geven geen POST waarde meer mee als je op submit drukt. Je kunt de content dus niet zomaar opslaan. Ik heb dit opgelost door de submit button van mijn edit-formulier een onclick mee te geven:
<input onclick="namevanjetextarea.toggleEditor()" type="submit" value="Save">
Hij veranderd hierdoor de Codepress-editor eerst in een normale textarea en verzend pas daarna het formulier.
Gewijzigd op 01/01/1970 01:00:00 door Thom Snijders