Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Экранирование кавычек (https://javascript.ru/forum/server/19264-ehkranirovanie-kavychek.html)

animegirl 30.07.2011 04:56

Экранирование кавычек
 
Есть задача, надо взять ХТМЛ код из файла, и передать его яваскрипту, в ХТМЛ коде весь джентльменский набор спецзнаков, но вот проблема, в каком-то месте проставляются \ перед двойными кавычками, думала, что это "magic_quotes_gpc", глянула phpinfo включены гады, отключила, но они продолжают добавляться, и как назло ТОЛЬКО перед ", если бы так же другие знаки экранизировались, было бы всё ок, но тут проблема в том, что мне надо экранизировать самой всё, а там получается уже начатая, но не законченная работа.

Вот код:
<?
header("Content-Type: application/x-javascript");
$response = array();
$response['datadiv'] = $_GET['divid'];
$response['menu_innerhtml'] = file_get_contents('html.container');
$response['parent_div_name'] = 'div123';
$jsondata = json_encode($response);
?>
var data = eval('(<?echo $jsondata;?>)');
document.getElementById(data['parent_div_name']).innerHTML = data['menu_innerhtml'];
document.getElementById('dynamic_data').removeChild(document.getElementById(data['datadiv']));


Как бы подправить по правильному?

$response['menu_innerhtml'] = stripslashes(file_get_contents('html.container'));


результат даёт тот же самый

Нашла примерно место, на которое выпадает ошибка, в ХТМЛ файле, есть такое:
<div class="button" onclick="somefunc('value',10);">
    Data
</div>

Если убрать двойные кавычки, то всё норм, но их использование есть и будет, так как нужно, вопрос в том, как обработать строку так, чтоб перестала выскакивать ошибка?

Общию картину чуток исправила, добавила экранирование одиночной кавычки
<?
header("Content-Type: application/x-javascript");
$response = array();
$response['datadiv'] = $_GET['divid'];
$response['menu_innerhtml'] = file_get_contents('html.container');
$response['parent_div_name'] = 'div123';
$jsondata = json_encode($response);
?>
(
    function()
        {
        var data = eval('(<?echo str_replace("'","\'",$jsondata);?>)');
        document.getElementById(data['parent_div_name']).innerHTML = data['menu_innerhtml'];
        document.getElementById('dynamic_data').removeChild(document.getElementById(data['datadiv']));
        }
)();


Часовой пояс GMT +3, время: 14:54.