Мой PHP_EOL «\ r \ n», однако, когда я делаю print_r в массиве, каждая новая строка имеет «\ n» – не «\ r \ n» – размещенную после него. 
Любая идея, если можно изменить это поведение?
  Использовать второй параметр в print_r (установить true ), прочитать DOC: http://www.php.net/manual/en/function.print-r.php 
  См.: mixed print_r ( mixed $expression [, bool $return = false ] ) ; 
Пример:
 $eol = chr(10); //Break line in like unix $weol = chr(13) . $eol; //Break line with "carriage return" (required by some text editors) $data = print_r(array(...), true); $data = str_replace(eol, weol, $data); echo $data; 
  Если вы посмотрите исходный код print_r вы найдете: 
 PHP_FUNCTION(print_r) { zval *var; zend_bool do_return = 0; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|b", &var, &do_return) == FAILURE) { RETURN_FALSE; } if (do_return) { php_output_start_default(TSRMLS_C); } zend_print_zval_r(var, 0 TSRMLS_CC); if (do_return) { php_output_get_contents(return_value TSRMLS_CC); php_output_discard(TSRMLS_C); } else { RETURN_TRUE; } } 
  в конечном итоге вы можете игнорировать материал arround zend_print_zval_r(var, 0 TSRMLS_CC);  для вашего вопроса. 
Если вы выполните команду stacktrace, вы найдете:
 ZEND_API void zend_print_zval_r(zval *expr, int indent TSRMLS_DC) /* {{{ */ { zend_print_zval_r_ex(zend_write, expr, indent TSRMLS_CC); } 
что приводит к
 ZEND_API void zend_print_zval_r_ex(zend_write_func_t write_func, zval *expr, int indent TSRMLS_DC) /* {{{ */ { switch (Z_TYPE_P(expr)) { case IS_ARRAY: ZEND_PUTS_EX("Array\n"); if (++Z_ARRVAL_P(expr)->nApplyCount>1) { ZEND_PUTS_EX(" *RECURSION*"); Z_ARRVAL_P(expr)->nApplyCount--; return; } print_hash(write_func, Z_ARRVAL_P(expr), indent, 0 TSRMLS_CC); Z_ARRVAL_P(expr)->nApplyCount--; break; 
  С этого момента вы можете продолжить поиск соответствующей строки, но поскольку уже существует жестко закодированное "Array\n" – я предполагаю, что в остальной части реализации print_r используется print_r та же жестко закодированная \n строка-вещь. 
  Итак, чтобы ответить на ваш вопрос: вы не можете изменить его, чтобы использовать \r\n .  Используйте один из предоставленных обходных решений. 
  Sidenode: поскольку print_r в основном используется для отладки, это также сделает работу: 
 echo "<pre>"; print_r($object); echo "</pre>"; 
Как указано в другом месте на этой странице, новые строки жестко закодированы в источнике PHP, поэтому вам нужно их вручную заменить.
  Вы можете использовать свою собственную версию print_r следующим образом: 
 namespace My; function print_r($expression, $return = false) { $out = \print_r($expression, true); $out = \preg_replace("#(?<!\r)\n#", PHP_EOL, $out); if ($return) { return $out; } echo $out; return true; } 
Всякий раз, когда вы хотите использовать его, вы просто импортируете его с помощью
 // aliasing a function (PHP 5.6+) use My\print_r as print_r; print_r("A string with \r\n is not replaced"); print_r("A string with \n is replaced"); 
  Затем он будет использовать PHP_EOL для PHP_EOL строк.  Обратите внимание, что он будет заменять только строки новой строки, например \n , но не любые \r\n которые могут иметься в $expression .  Это делается для того, чтобы не превратить \r\r\n . 
  Преимущество этого в том, что он будет работать в качестве замены встроенной функции.  Поэтому любой код, который уже использует родной print_r может быть заменен простым добавлением оператора use. 
  Это может быть не самое элегантное решение, но вы можете захватить вывод print_r() с помощью вывода буфера, а затем использовать str_replace() для замены существующих \n с помощью PHP_EOL .  В этом примере я заменил его на x чтобы показать, что он работает … 
 ob_start(); $test_array = range('A', 'Z'); print_r($test_array); $dump = ob_get_contents(); ob_end_clean(); 
  Как указано в dognose, начиная с PHP 4.3 вы можете вернуть результат print_r() в строку (более элегантную): 
 $dump = print_r($test_array, true); 
Затем замените окончания строки:
 $dump = str_replace("\n", "x" . PHP_EOL, $dump); echo $dump; 
Вывод:
 Arrayx (x [0] => Ax [1] => Bx [2] => Cx [3] => Dx [4] => Ex [5] => Fx [6] => Gx ... etc [25] => Zx )x