За последние 24 часа нас посетили 17416 программистов и 1712 роботов. Сейчас ищут 1743 программиста ...

Экранирование кавычек

Тема в разделе "JavaScript и AJAX", создана пользователем animegirl, 30 июл 2011.

  1. animegirl

    animegirl Активный пользователь

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

    Вот код:
    PHP:
    1.  
    2. <?
    3. header("Content-Type: application/x-javascript");
    4. $response = array();
    5. $response['datadiv'] = $_GET['divid'];
    6. $response['menu_innerhtml'] = file_get_contents('html.container');
    7. $response['parent_div_name'] = 'div123';
    8. $jsondata = json_encode($response);
    9. ?>
    10. var data = eval('(<?echo $jsondata;?>)');
    11. document.getElementById(data['parent_div_name']).innerHTML = data['menu_innerhtml'];
    12. document.getElementById('dynamic_data').removeChild(document.getElementById(data['datadiv']));
    13.  
    Как бы подправить по правильному?

    PHP:
    1.  
    2. $response['menu_innerhtml'] = stripslashes(file_get_contents('html.container'));
    3.  
    результат даёт тот же самый

    Нашла примерно место, на которое выпадает ошибка, в ХТМЛ файле, есть такое:
    HTML:
    1.  
    2. <div class="button" onclick="somefunc('value',10);">
    3.     Data
    4. </div>
    5.  
    Если убрать двойные кавычки, то всё норм, но их использование есть и будет, так как нужно, вопрос в том, как обработать строку так, чтоб перестала выскакивать ошибка?

    Общию картину чуток исправила, добавила экранирование одиночной кавычки
    PHP:
    1.  
    2. <?
    3. header("Content-Type: application/x-javascript");
    4. $response = array();
    5. $response['datadiv'] = $_GET['divid'];
    6. $response['menu_innerhtml'] = file_get_contents('html.container');
    7. $response['parent_div_name'] = 'div123';
    8. $jsondata = json_encode($response);
    9. ?>
    10. (
    11.     function()
    12.         {
    13.         var data = eval('(<?echo str_replace("'","\'",$jsondata);?>)');
    14.         document.getElementById(data['parent_div_name']).innerHTML = data['menu_innerhtml'];
    15.         document.getElementById('dynamic_data').removeChild(document.getElementById(data['datadiv']));
    16.         }
    17. )();
    18.  
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Покажи сиськи!
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    собачник - спец по борьбе с говнохостингом.
     
  4. Обычный Нуб

    Обычный Нуб Активный пользователь

    С нами с:
    30 июн 2011
    Сообщения:
    30
    Симпатии:
    0
    Товарищч animegirl. У тебя код не работает потому что он не кавайный. :D
     
  5. animegirl

    animegirl Активный пользователь

    С нами с:
    30 июл 2011
    Сообщения:
    6
    Симпатии:
    0
    Обычный Нуб
    Ну так будь някой, сделай его ковайным ^_^
     
  6. Обычный Нуб

    Обычный Нуб Активный пользователь

    С нами с:
    30 июн 2011
    Сообщения:
    30
    Симпатии:
    0
    Боюсь, у меня тентакли для этого коротковаты.
     
  7. animegirl

    animegirl Активный пользователь

    С нами с:
    30 июл 2011
    Сообщения:
    6
    Симпатии:
    0
    Обычный Нуб
    злые вы, уйду я от вас :(
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    мы в страхе
     
  9. animegirl

    animegirl Активный пользователь

    С нами с:
    30 июл 2011
    Сообщения:
    6
    Симпатии:
    0
    Помогайте давайте, а нето натравлю манулов на вас :mad:
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    нету их. их даже в зоопарке не найти. я проверял.
     
  11. animegirl

    animegirl Активный пользователь

    С нами с:
    30 июл 2011
    Сообщения:
    6
    Симпатии:
    0
    Ладно мальчики, давайте так, вы мне поможете с задачкой, а потом мы продолжим прикалываться, а нето сейчас нету настроения, пока не разберусь с проблемой
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    animegirl
    хз что тут делать. я вобще не знаю как себя вести в ситуации когда какие-то там мэджиквотесы включены. у меня они всегда выключены.

    еще вот помнится есть мэджикквотесрантайм =) http://www.php.net/manual/en/function.g ... untime.php


    и вобще на этом форуме либо фотка либо сиськи, но аватарки - низя
     
  13. animegirl

    animegirl Активный пользователь

    С нами с:
    30 июл 2011
    Сообщения:
    6
    Симпатии:
    0
    Выключила и те и другие, json_encode экранирует ", я добавила ещё экранирование ' проблема в том, что браузер ошибками плюётся.

    Ясно, сейчас покопаюсь на компе, подумай пока, как мне помочь
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Споешь песенку Ранки Ли - починякаем твой код.
     
  15. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    animegirl
    на самом деле они не злые. нужно просто дать им шанс :))

    не совсем ясно зачем нужно делать eval ? чем не пойдёт var data = <?php echo $jsondata; ?>; ?
    тогда не нужно даже экранировать одинарные кавычки

    какие именно ошибки выдаёт браузер? пользуешься фаербагом для отладки?
    не видя полной картины javascript кода, и не зная ошибок, довольно сложно сказать где именно падает.
    а твоё предположение насчёт строки с ошибкой возможно верное, но только возможно...

    было бы желательно увидеть данную страницу "вживую", пощупать её своими браузерами... =)))))))
     
  16. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    таже была проблема http://www.php.ru/forum/viewtopic.php?t=34498

    Смотри мои посты...
    А если у тебя записывается( или уже так )экранированными то, убрать нужно убрать экранирование.
    Убираем str_replace('\\','',в каком html:( <span style= \"color:#000000;\"></span> ), убрать \ <- палочки );
    а уже вывод и т.д. в js:

    у меня так:
    PHP:
    1. <?php $s='<a href=\'javascript:edits("'.addcslashes($jsondata,'""').'")\'>ТЫЦ</a>'; ?>
    у тебя наверно так:
    [js]var data = eval('(<?php echo addcslashes($jsondata,'""');?>)');[/js]

    HTML:
    1. <span style= \"color:#000000;\"></span>   \ <- экранируем
    И у нас всегда без них только js знает, что нужно их и ставим, а везде всегда без них где - то в коде.
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    вы вобще ее сообщение читали? :D

    ЭТО БАРАБАХИ!

    Gromo
    не совсем ясно зачем нужно делать eval ?
    это не пхп, а яваскрипта eval

    правда, это не объясняет такой конструктив.
     
  18. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    animegirl
    Сейчас лето, а фотка осенняя. Неужели нету летних фото? А ну срочно фоткаться!
     
  19. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    я в курсе, что это яваскрипт эвал, однако он тут, имхо, лишний. в нём просто нет необходимости при json_encode.
     
  20. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Gromo
    это не известно =) может она какие-то выражения туда сует.
     
  21. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    igordata
    нет, это невозможно
     
  22. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Gromo
    пасяму? потому что равно?
     
  23. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    igordata
    потому что там массив
     
  24. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    На сколько я помню, надо подключить скриптик (кажись, json_parse.js) и передать полученный json не в eval(), а в метод из этого файлика (кажись jsonParse()). И на выходе получить уже объект.
     
  25. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ой, как все серьезно =)