php ajax json function backslash

php - ¿Cómo eliminar la barra invertida en la función json_encode()?



ajax function (10)

¿Cómo eliminar la barra diagonal inversa (/) en una cadena? cuando se utiliza echo json_encode() ?

Por ejemplo:

<?php $str = "$(/"#output/").append(/"<p>This is a test!</p>/")"; echo json_encode($str); ?>

nota: cuando haga eco de $ str, no habrá ningún problema ... pero cuando haga eco usando json_encode() , aparecerá la barra diagonal (/) .

¿Hay una manera de resolver esto? Gracias.


Acabo de descubrir que json_encode solo se escapa /n si se usa entre comillas simples.

echo json_encode("Hello World/n"); // results in "Hello World/n"

Y

echo json_encode(''Hello World/n''); // results in "Hello World///n"


Como dijo HungryDB, la forma más fácil de hacerlo es:

$mystring = json_encode($my_json,JSON_UNESCAPED_SLASHES);

Eche un vistazo a su versión de php porque este parámetro se ha agregado en la versión 5.4.0

documentación json_encode



La solución que sí funciona es esta:

$str = preg_replace(''////"/'',"/"", $str);

Sin embargo, debes tener mucho cuidado aquí porque debes asegurarte de que todos tus valores tengan sus citas escapadas (lo que generalmente es cierto de todos modos, pero especialmente ahora que estarás eliminando todos los escapes del idiotas (y disfuncionales) de PHP) "funcionalidad de agregar barras invertidas innecesarias delante de todos sus identificadores de objeto y valores).

Entonces, php, de forma predeterminada, se escapa a los valores que tienen una cita, así que si tiene un valor de My name is "Joe" en su base de datos, php lo devolverá, ya que My name is //"Joe//" .

Esto puede o no ser útil para usted. Si no es así, puedes dar el paso adicional de reemplazar la barra diagonal inicial de esta manera:

$str = preg_replace(''//////"/'',"/"", $str);

Sí ... es feo ... pero funciona.

Entonces te quedas con algo que se parece vagamente a JSON real.


Manera más sencilla sería

$mystring = json_encode($my_json,JSON_UNESCAPED_SLASHES);


No quieres borrarlo. Debido a que JSON usa comillas dobles "" para cadenas, y tu devuelve

"$(/"#output/").append(/" This is a test!<//p>/")"

estas barras invertidas escapan a estas citas


Si es posible. ¡Mira!

$str = str_replace(''//', '''', $str);

pero ¿Por qué querrías?


Si usas PHP 5.2, json_encode solo espera 1 parámetro cuando lo llames. Esta es una alternativa para eliminar la barra de valores json:

stripslashes(json_encode($array))

No lo uses si tus datos son complicados.


Yo uso lo siguiente para eliminar las barras inclinadas

echo json_decode($mystring, JSON_UNESCAPED_SLASHES);


json_encode($response, JSON_UNESCAPED_SLASHES);