}
return (strcasecmp(substr($haystack, strlen($haystack) - strlen($needle)), $needle) === 0);
}
+
+/**
+ * Same as nl2br(), but escapes < and >
+ */
+function nl2br_escaped($html)
+{
+ return str_replace('>','>',str_replace('<','<',nl2br($html)));
+}
+
+/**
+ * htmlspecialchars wrapper
+ */
+function escape($str)
+{
+ return htmlspecialchars($str, ENT_COMPAT, 'UTF-8', false);
+}
+
+/**
+ * Link sanitization before templating
+ */
+function sanitizeLink(&$link)
+{
+ $link['url'] = escape($link['url']); // useful?
+ $link['title'] = escape($link['title']);
+ $link['description'] = escape($link['description']);
+ $link['tags'] = escape($link['tags']);
+}
+
+/**
+ * Checks if a string represents a valid date
+ *
+ * @param string a string-formatted date
+ * @param format the expected DateTime format of the string
+ * @return whether the string is a valid date
+ * @see http://php.net/manual/en/class.datetime.php
+ * @see http://php.net/manual/en/datetime.createfromformat.php
+ */
+function checkDateFormat($format, $string)
+{
+ $date = DateTime::createFromFormat($format, $string);
+ return $date && $date->format($string) == $string;
+}
?>