2016-06-15 2 views
0

strtotime(" ") не возвращает false, когда я предоставляю строку, содержащую просто пробел или любой другой символ.strtotime() не возвращает false

Есть ли меньше решений для кода, чтобы вернуть значение false?

Я не могу использовать preg_match, потому что форматы дат различаются в зависимости от языка каждого пользователя.

http://php.net/manual/en/function.strtotime.php

Возвращает метку времени на успех, FALSE в противном случае. До версии PHP 5.1.0 эта функция вернет -1 при сбое.

Редактировать: мне нужно проверить строку даты, а не нарезать пробелы или другие персонажи, предоставленные пользователем.

+0

@AlexG Обрезать только полоски от начала и конца строки. –

+0

Ребята, мне не нужно удалять пространство, мне нужно проверить строку даты. См. Мое редактирование. –

+0

Fwiw, обрезка сама по себе не является целью, это всего лишь полезная операция, чтобы предотвратить передачу аргумента 'strtotime()' только пробела. –

ответ

0

Применить trim() в качестве обходного пути для удаления ведущих и конечных пробелов перед вызовом strtotime().

strtotime(' ') возвращает текущее время.

strtotime('') (strtotime(trim(' '))) возвращение false.

Это поведение функции уже reported как ошибка и имеет fix на основе обрезки, но похоже, что патч по-прежнему не принят командой PHP.

+0

Добавил дополнительный отчет об ошибке: https://bugs.php.net/bug.php?id=72425&thanks=4 –

+0

выглядит так, как это исправление ошибок получает некоторый прогресс .... –

0

Я что-то упустил? Вы пытались удалить пространство? Есть ли веская причина держать пространство? Я ошибаюсь, когда нет места.

strtotime ("")

+0

Пробел возвращает текущее время ... текущее время - это значение, так что это правда. Никакое пространство не возвращает false ... это как раз то, как написан PHP. – Nabsta

Смежные вопросы