}
/**
- * htmlspecialchars wrapper
+ * Htmlspecialchars wrapper
+ * Support multidimensional array of strings.
+ *
+ * @param mixed $input Data to escape: a single string or an array of strings.
+ *
+ * @return string escaped.
+ */
+function escape($input)
+{
+ if (is_array($input)) {
+ $out = array();
+ foreach($input as $key => $value) {
+ $out[$key] = escape($value);
+ }
+ return $out;
+ }
+ return htmlspecialchars($input, ENT_COMPAT, 'UTF-8', false);
+}
+
+/**
+ * Reverse the escape function.
+ *
+ * @param string $str the string to unescape.
+ *
+ * @return string unescaped string.
*/
-function escape($str)
+function unescape($str)
{
- return htmlspecialchars($str, ENT_COMPAT, 'UTF-8', false);
+ return htmlspecialchars_decode($str);
}
/**
*
* @return string formatted description.
*/
-function format_description($description, $redirector) {
+function format_description($description, $redirector = false) {
return nl2br(space2nbsp(text2clickable($description, $redirector)));
}