Странная строка не регистрируется правильно - PullRequest
1 голос
/ 15 февраля 2012

, поэтому я настроил функцию «время-время-секунды», и она отлично работает, когда она включена, с тестовой строкой ... скажем 12:53:13 PM.

Но когда я помещаю его в другой сценарий (с помощью require или просто с помощью копирования), я нахожу проблему, я не уверен, что это именно из-за функции, но это просто странно. Строка

«PM» регистрируется как 6 символов вместо 2, как и должно быть, так говорит var_dump. Есть идеи почему?

Я получил время, взорвав взрывающуюся строку всей даты. Это на самом деле код

$time = explode(" ",$dateallstr);
$time = array($time[5],$time[6]);
$time = implode(" ",$time);

var_dump($time);
//require("timeinsecs.php");

И это то, что возвращает var_dump

array(4) { [0]=> string(2) "11" [1]=> string(2) "14" [2]=> string(2) "55" [3]=> string(6) "PM" }

Это начальная строка.

DATEALLSTR: string(45) "Tuesday 14th of February 2012 11:14:55 PM"

Пожалуйста, помогите, я понятия не имею, почему это будет делать.

РЕДАКТИРОВАТЬ:

Хорошо, получил bin2hex. Я не уверен, что все это просто bin2hex.

BIN2HEX504d3c2f693estring (6) "PM"

Ответы [ 2 ]

3 голосов
/ 15 февраля 2012

Глядя на вывод функции bin2hex(), я заметил последовательность 3c 2f 69 3e. Что это значит? Ответ:

</i>

Просмотр источника вывода var_dump(). Стоит сказать что-то вроде:

array(4) {
[0]=> string(2) "11"
[1]=> string(2) "14"
[2]=> string(2) "55"
[3]=> string(6) "PM</i>"
}

</i> анализируется браузером как тег HTML и не будет отображаться!

2 голосов
/ 15 февраля 2012

Исходная строка имеет длину 41. Похоже, ваш ввод несет 4 символа NUL после текста, который не печатается, но считается до длины:

var_dump("Tuesday 14th of February 2012 11:14:55 PM");
 => string(41) "Tuesday 14th of February 2012 11:14:55 PM"

var_dump("Tuesday 14th of February 2012 11:14:55 PM\0\0\0\0");
 => string(45) "Tuesday 14th of February 2012 11:14:55 PM"

Вы можете попробовать trim() ввод до explode(), что должно избавить от лишних символов:

$time = explode(" ", trim($dateallstr));

Редактировать : Вы пропустили первый шаг устранения неполадок в PHP: просмотр исходного кода, чтобы увидеть, что веб-браузер не показывает. Теперь, когда вы разместили шестнадцатеричный дамп, мы видим, что последняя строка на самом деле "PM</i>".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...