Многострочное эхо без / r / n и / t в кодированном JSON (PHP) - PullRequest
0 голосов
/ 16 мая 2019

При создании ответа для XHR-запросов в PHP с использованием ob_get_clean () и json_encode, ответ содержит ненужные новые строки ( / r , / n ) и вкладки ( / т ).Они не служат никакой видимой цели для пользователя, но в любом случае потребляют пропускную способность.

Удаление их с помощью str_replace решает проблему, в то же время вызывая другую: она также удаляет необходимые разрывы строк в текстовых областях.

header("Content-Type: application/json; charset=utf-8");

ob_start();

echo "
test
<textarea>
</textarea>
test
";

$test = json_encode(ob_get_clean());

echo $test;

Вывод:

\r\ntest\r\n<textarea>\/r\/n<\/textarea>\r\ntest\r\n

Удаление их с помощью str_replace:

header("Content-Type: application/json; charset=utf-8");

ob_start();

echo "
test
<textarea>
</textarea>
test
";

$test = ob_get_clean();
$test = str_replace(PHP_EOL, NULL, $test);
$test = json_encode($test);

echo $test;

Вывод:

test<textarea><\/textarea>test

Однако:

Как избавиться от / r / n и / t , не испортив текстовых областей?

Более открыто спросили:

Есть ли другое (или лучшее) решение для присоединения нескольких строк html-элементов к переменной, отличной от ob_start() и ob_get_clean()?

...