}
-# add a tab at the begining of each non-empty line
+# add a tab at the begining of each line
function enc_tab($str) {
- $lines = explode("\n", $str);
- $out = '';
- foreach($lines as $line) {
- if($line) {
- $out .= "\t$line";
- }
- $out .= "\n";
+ if('' . $str === '') {
+ return '';
}
-
- # remove the extra newline added above
- return substr($out, 0, -1);
+ return "\t" . implode("\n\t", explode("\n", $str));
}
function enc_upper($str) {
}
$out = '';
- foreach($options as $valdisp) {
- list($value, $display) = $valdisp;
+ foreach($options as $option) {
+ list($value, $display, $arg3) = $option;
$out .= '<option';
- if(in_array($value, $selected)) {
- $out .= ' selected="selected"';
+ if($arg3 == 'disabled') {
+ $out .= ' disabled';
+ } elseif(in_array($value, $selected)) {
+ $out .= ' selected';
}
if($value !== $display || strpos($value, ' ') !== false) {
return 's';
}
+
+# turn http/ftp (s) urls into html links (and encode everything for html)
+# does not encode without protocol (eg "www.foo.com")
+# does not linkify email addresses
+function enc_linkify($str) {
+ $ret = '';
+ $even = true;
+ $pieces = preg_split("/((?:ht|f)tps?:\/\/[^ \,\"\n\r\t<]+)/is", $str, null, PREG_SPLIT_DELIM_CAPTURE);
+ foreach($pieces as $piece) {
+ if($even) {
+ $ret .= enc_html($piece);
+ } else {
+ $ret .= '<a href="' . enc_attr($piece) . '">' . enc_html($piece) . '</a>';
+ }
+ $even = !$even;
+ }
+ return $ret;
+}