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

0

Я пытаюсь прочитать некоторые двоичные данные из инструмента командной строки с PHP в Windows. Первоначально инструмент был git-шоу, но я также могу воспроизвести проблему с типом (чтобы убедиться, что 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"

Что происходит? Как получить дословные данные?

Теги:
line-endings

2 ответа

2
Лучший ответ

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

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

ob_start();
passthru("git command blah blah");
$var = ob_get_clean();
echo strlen($var);
  • 0
    Там нет файла. Это выход из git show, который я хочу.
  • 0
    @AndreKR, ты должен был сказать это прямо в начале. Я обновил ответ.
Показать ещё 1 комментарий
0

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню