Я совершенно никогда не пишу здесь, так как я всегда нахожу ответ в других сообщениях … но на этот раз ничего не работает, я не знаю, что я делаю неправильно.
Мне нужно, чтобы var_dump переменная в строку. я нашел ob_start()
а также ob_get_clean()
в руководстве по PHP для достижения этой цели.
Для нужд текстового файла журнала / отладки я хочу, чтобы все \ n, \ r, несколько пробелов и т. Д. Были очищены.
Мои поиски на SO принесли мне такие решения, как
$r = preg_replace( '/\s+/', ' ', trim($r));
//or
$r = trim(preg_replace( '/\s+/', ' ', $r));
//I even tried this:
$r = trim(preg_replace( '/\s+/', ' ', trim($r)));
Но я не могу избавиться от последнего символа новой строки ни с одним из этих решений.
Вот код функции:
function var_dump_to_string ($v,$style='normal') {
ob_start();//use buffering to catch direct output from var_dump()
var_dump($v);
$r=ob_get_clean();
if($style=='flat')//just a flat string with no \r\n nor extra whitespaces
$r = trim(preg_replace( '/\s+/', ' ', trim($r)));
return $r;
}
В моем текстовом журнале все еще есть нежелательный перевод строки. Я пытался var_dump результат этой функции, там действительно есть новая строка …
Что мне не хватает?
РЕДАКТИРОВАТЬ: (рабочая) функция теперь выглядит следующим образом, благодаря @vks и @anubhava ответам:
function var_dump_to_string ($v,$style='normal') {
$r = var_export($v, true);
if($style=='flat') $r = preg_replace('/\s+|\s$/', ' ', $r);
return $r;
}
\s$
Попробуйте это. Заменить на empty string
,
\s+|\s$
использование var_export вместо этого, чтобы получить возвращаемое значение определения переменной в строке:
$ret = var_export($v, true);
// code to replace newline etc:
$ret = preg_replace('/\s+$/', '', $ret);
Попробуй это
$r = trim(preg_replace( '/(\r)?\n(\s*)?(\r)?\n/', ' ', trim($r)));
Решение 1: preg_replace("/\r\n|\r|\n/", ' ', $r)
Код:
function var_dump_to_string($v, $style='normal'){
ob_start(); //use buffering to catch direct output from var_dump()
var_dump($v);
$r=ob_get_clean();
if($style=='flat')//just a flat string with no \r\n nor extra whitespaces
$r = trim(preg_replace("/\r\n|\r|\n/", ' ', $r));
return $r;
}
Решение 2: str_replace(PHP_EOL, '', $r)
Код:
function var_dump_to_string($v, $style='normal'){
ob_start(); //use buffering to catch direct output from var_dump()
var_dump($v);
$r=ob_get_clean();
if($style=='flat')//just a flat string with no \r\n nor extra whitespaces
$r = trim(str_replace(PHP_EOL, ' ', $r));
return $r;
}
«PHP_EOL» включает в себя все символы «конца строки». Это решение является лучшим подходом для замены символов «конец строки».