Невозможно удалить все новые строки из строки — последний остается

Я совершенно никогда не пишу здесь, так как я всегда нахожу ответ в других сообщениях … но на этот раз ничего не работает, я не знаю, что я делаю неправильно.

Мне нужно, чтобы 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;
}

0

Решение

\s$

Попробуйте это. Заменить на empty string,

\s+|\s$
1

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

использование var_export вместо этого, чтобы получить возвращаемое значение определения переменной в строке:

$ret = var_export($v, true);

// code to replace newline etc:
$ret = preg_replace('/\s+$/', '', $ret);
1

Попробуй это

$r = trim(preg_replace( '/(\r)?\n(\s*)?(\r)?\n/', ' ', trim($r)));
1

Решение 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» включает в себя все символы «конца строки». Это решение является лучшим подходом для замены символов «конец строки».

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