Я пытаюсь заменить все случаи \/
в строке вывода в 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»?
Вы используете неправильную константу.
использование 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);
Попробуйте вывести вывод $ и проверить это, я почти уверен, что именно json_encode (), который вы используете, добавляет \ для вас
\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);