<?php
/***************************************************************************
- * Copyright (C) 2003-2010 Polytechnique.org *
+ * Copyright (C) 2003-2011 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
return new DateTime("@$date");
} else {
try {
+ $list = explode('/', $date);
+ if (count($list) == 3) {
+ $date = $list[1] . '/' . $list[0] . '/' . $list[2];
+ }
+ // FIXME: On PHP < 5.3, parsing error are reported using an error,
+ // not an exception. Thus count the number of error to detect
+ // errors.
+ $errors = @count($GLOBALS['pl_errors']);
$d = new DateTime($date);
+ if (@count($GLOBALS['pl_errors']) > $errors) {
+ return null;
+ }
return $d;
} catch (Exception $e) {
return null;
// }
}
+/** Get the first n characters of the string
+ */
+function left($string, $count)
+{
+ return substr($string, 0, $count);
+}
+
+/** Get the last n characters of the string
+ */
+function right($string, $count)
+{
+ return substr($string, -$count);
+}
+
+/** Check if a string is a prefix for another one.
+ */
+function starts_with($string, $prefix, $caseSensitive = true)
+{
+ $prefixLen = strlen($prefix);
+ if (strlen($string) < $prefixLen) {
+ return false;
+ }
+ $part = left($string, $prefixLen);
+ if ($caseSensitive) {
+ return strcmp($prefix, $part) === 0;
+ } else {
+ return strcasecmp($prefix, $part) === 0;
+ }
+}
+
+/** Check if a string is a suffix for another one.
+ */
+function ends_with($string, $suffix, $caseSensitive = true)
+{
+ $suffixLen = strlen($suffix);
+ if (strlen($string) < $suffixLen) {
+ return false;
+ }
+ $part = right($string, $suffixLen);
+ if ($caseSensitive) {
+ return strcmp($suffix, $part) === 0;
+ } else {
+ return strcasecmp($suffix, $part) === 0;
+ }
+}
+
+/** Check if the input data can be seen as an integer.
+ */
+function can_convert_to_integer($data)
+{
+ return is_int($data) || ctype_digit($data);
+}
+
+/** Interpret the input data as an integer or return false.
+ */
+function to_integer($data)
+{
+ if (!can_convert_to_integer($data)) {
+ return false;
+ }
+ return intval($data);
+}
+
+
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
?>