строка — замена & quot; \ / & quot; с & quot; / & quot; в переполнении стека

Я пытаюсь заменить все случаи \/ в строке вывода в php с /, Но это не работает..

Вот мой код:

$output = str_replace("\\/", "/", $output);
echo json_encode($output, JSON_UNESCAPED_UNICODE );
echo json_encode($output, JSON_UNESCAPED_SLASHES);

но я все еще получаю такие строки в выводе на веб-странице, например:

https:\/\/img.xxxx.com\/images\/channel-resources\/1\/def\/43\/0\/1\/defintion.png

или что-то типа того:

https:\/\/img.yyyy.de\/images\/channel-resources\/1\/obchi\/43\/0\/1\/obchi_1.png

Если я переключу порядок двух функций следующим образом:

$output = str_replace("\\/", "/", $output);
echo json_encode($output, JSON_UNESCAPED_SLASHES);
echo json_encode($output, JSON_UNESCAPED_UNICODE );

Я правильно понял косую черту, но немецкие буквы появляются в странной форме, например: «\ u00df» или «u00f6 \ u00df» … например, мир «große» будет написан как «gro \ u00dfe»

У кого-нибудь есть идея, чтобы это исправить? правильно ли писать немецкие буквы и URI? не похоже на «https://img.xxxx.com/images/channel-resources/1/def/43/0/1/defintion.png»?

0

Решение

Вы используете неправильную константу.

использование JSON_UNESCAPED_SLASHES вместо JSON_UNESCAPED_UNICODE чтобы избежать попадания косой черты в json_encode(),

Вы можете указать оба, используя JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE,

Увидеть http://php.net/manual/en/json.constants.php

$output = str_replace("\\/", "/", $output);
echo json_encode($output, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
2

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

Попробуйте вывести вывод $ и проверить это, я почти уверен, что именно json_encode (), который вы используете, добавляет \ для вас

0

\u00* являются письмами Unicode.

Попробуйте это разобрать в html_entities

$output = 'http:\/\/ßßüüää.com\/';
$output = str_replace("\\/", "/", $output);
$output = htmlentities($output, ENT_COMPAT, "UTF-8");
echo json_encode($output, JSON_UNESCAPED_SLASHES);
0
По вопросам рекламы [email protected]