2016-06-14 17 views
0

Я пытаюсь заменить все вхождения \/ в выходной строки в PHP с /, но он не работает ..Замена « /» с «/» в 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

вы пытаетесь заменить символ с тем же характером? – Cruiser

+0

попробуйте этот '$ output = str_replace (" \/","/", $ output);' –

+0

попробовал это уже до приезда сюда .. получил то же самое на странице! Проблема в том, что когда я пытаюсь выполнить мой код на http://phptester.net/, он работает так, как мне это нужно – ZelelB

ответ

2

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

Используйте 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); 
+0

вы правы! так что это исправлено с помощью «\ /», но у меня есть такие странные символы, как «\ u00d» теперь в тексте, вместо немецких букв, таких как «ö» и «ä» и т. д. – ZelelB

+1

Вы можете указать как с помощью bitwise или operator '|' так: 'JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE', который должен дать вам обоим. Я отредактирую свой пост, чтобы это отразить. – Martijn

+0

работал с оператором или оператором! Огромное спасибо!!Но следующая проблема .. Я не получаю отображение DataTable. Я отредактирую свой пост с помощью своего javascript-кода, чтобы вы могли видеть, где может быть проблема. – ZelelB

0

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

+0

Мне нужен json_encode, чтобы избавиться от таких строк «\ u00c4 \ u00b3» вместо немецких букв в код .. Это помогло мне получить немецкие письма. – ZelelB

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

Я получаю сообщение об ошибке «Возврат данных DataTables: неверный ответ json» и «null» (эхо) – ZelelB

Смежные вопросы