Есть задача, надо взять ХТМЛ код из файла, и передать его яваскрипту, в ХТМЛ коде весь джентльменский набор спецзнаков, но вот проблема, в каком-то месте проставляются \ перед двойными кавычками, думала, что это "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']));
}
)();