Что меняет мои разрывы строк?

Я пытаюсь прочитать некоторые двоичные данные из инструмента командной строки с PHP на Windows. Изначально инструмент был мерзавец, но я могу воспроизвести проблему с тип а также (чтобы убедиться, что нет Git autocrlf происходит).

Я не уверен, что происходит, но где-то на пути окончания строк, кажется, преобразованы. Отметим, …

В командной строке:

# dir temp
18.01.2015  03:24             1.362 temp

В PHP:

$data = `type d:\\temp`;
echo strlen($data);                            // outputs "1302"echo strlen(str_replace("\n", "\r\n", $data)); // outputs "1362"echo strlen(file_get_contents('d:\\temp'));    // outputs "1362"

Что здесь происходит? Как я могу получить стенографические данные?

0

Решение

file_get_contents() получит вам дословные данные, бинарный сейф. Избегайте таких вещей, как ОС type ты использовал.

Попробуйте использовать другие методы вместо обратных кавычек, например passthru например:

ob_start();
passthru("git command blah blah");
$var = ob_get_clean();
echo strlen($var);
2

Другие решения

Обходной путь, который я нашел, состоит в следующем:

ob_start();
passthru('type d:\\temp');
$data = ob_get_clean();
0

По вопросам рекламы [email protected]