Экранирование кавычек? хм,не работает...

Discussion in 'PHP' started by BiG_][aKeR, 15 Jan 2010.

  1. BiG_][aKeR

    BiG_][aKeR New Member

    Joined:
    30 Nov 2008
    Messages:
    21
    Likes Received:
    1
    Reputations:
    0
    1. Сколько не экранировал всё было норм,а сейчас столкнулся с проблемой
    <a onClick="alert(\"abc\")">123</a>
    не работает!
    Не предлагать мне решение одной скобкой т.е. ' !
    Вопрос задан именно в использовании двойной в двойных кавычках!

    2.Плюс ко всему еще один глюк нашел в экранировании

    Code:
    <a onClick="document.getElementById('centent1').innerHTML='<b onclick=\'alert(\\\'popko\\\')\'>Кликни,но уже не работает...</b>'">Кликни</a>
    <div id='centent1'></div>
    По сути по клику по второму тексту должен вывести алерт,все скобки так как и нада стоят,но его НЕТУ...консоль ошибок молчит...
     
  2. Pir4tt

    Pir4tt Elder - Старейшина

    Joined:
    3 Jan 2008
    Messages:
    73
    Likes Received:
    36
    Reputations:
    5
    Как вариант напиши вот так:
    <a onClick="alert(&quot;abc&quot;)">123</a>
    ;)
     
  3. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    Большой_][акер
    Code:
    <a href="#" onClick='document.getElementById("centent1").innerHTML="<b onclick=\"alert(/привет/);\">Кликни,но уже не работает...</b>"'>Кликни</a>
    <div id='centent1'></div>
    
    
    Решение кривовато (посторонние символы), но работает.
    А вообще зачем тут такой мазахизм?
    Не проще создать JS функцию, которая всё это будет выполнять?
    Например:
    Code:
    <script>
    function doooo(){
    
    document.getElementById("centent1").innerHTML = "<b onclick=\"alert('привет');\">Кликни,но уже не работает...</b>";
    return true;
    
    }
    </script>
    <a href="#" onclick="doooo();">Кликни</a>
    <div id='centent1'></div>
    
     
    #3 Deathdreams, 15 Jan 2010
    Last edited: 15 Jan 2010
  4. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    Очень Большой Хакер,
    Code:
    <a onClick="document.getElementById('centent1').innerHTML='<b onclick=alert(\'popko\');>Кликни,но уже не работает...</b></a>'">Кликни</a>
    <div id='centent1'></div>
    
    работает алерт
     
    #4 b3, 15 Jan 2010
    Last edited: 15 Jan 2010
  5. BiG_][aKeR

    BiG_][aKeR New Member

    Joined:
    30 Nov 2008
    Messages:
    21
    Likes Received:
    1
    Reputations:
    0
    вопрос стоял не как вывести этот алерт,а как экранирова последуюшие скобки!!!
    т.е. можно было бы и по функциям розбросать это всё, onclick=pos();
    а в функции всё экранировать свободно можно...
    ты сделай так как и в том примере,и этим екранированием,чтоб внутри уже\' \' еще были такие же скобки а в них еще...
     
  6. imajo.ati

    imajo.ati Banned

    Joined:
    21 Feb 2008
    Messages:
    232
    Likes Received:
    62
    Reputations:
    8
    <div onclick="alert(&quot;читай RFC, \&quot;хакер\&quot;&quot; );">hello</div>
     
  7. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    Самый Большой Хакер,
    Не заморачивайся ты с нагромождением кавычек.
    Лично я создаю отдельные функции, особенно когда времени нет разбираться где какую кавычку ставить.
    Я не один такой.
     
  8. imajo.ati

    imajo.ati Banned

    Joined:
    21 Feb 2008
    Messages:
    232
    Likes Received:
    62
    Reputations:
    8
    может ему безымянная нужна
     
  9. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    Как и везде - бэкслешами \'
    Стоило тему создавать из-за того что б спросить как экранировать спец символы? Ну так прочитай азы программирования, найдеш на первых страницах эту информацию.
     
  10. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    Нет.
    А првильный ответ(самый первый) ты стер по незнанию, да еще и камент тупой поставил при удалении.
    Фу так делать!

    А при чем тут программирование, если проблема в разметке?
    Почитай азы ;)

    P.S. http://www.gramota.ru/class/coach/tbgramota/45_88 пункт 3.
     
  11. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    Так в разметке или в экранировании спец символов? Может быть тебе самому стоит загуглить? ))
    Как видиш мой вариант работает, и он соответствует поставленой задаче, или ты из тех кто тоже для элементарных задач будет писать гавно-функции, или конструкции типа &quot; ?
    ЗЫ По поводу правописания, сам понимаеш, это не существенно, главное суть, учитывая то что :
    Может я не прав, я с JS очень слабо знаком, но с удовольтвием пообщался бы на эту тему, ну есесно не на форуме ;)
     
    #11 b3, 17 Jan 2010
    Last edited: 17 Jan 2010
  12. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    b3 Есть мнение, что второй вопрос следует из первого. Так что же делать, если автору требуется обрамлять в кавычки аттрибут onclick? Например если там будет тупо два вызова alert на один обработчик?
     
    _________________________
  13. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    1. Сколько не стрелял себе в ногу, всё было норм, а сейчас стреляю неправильно и не работает!
    Стрелять холостыми не предлагать, толька баивыми!
    2. Плюс нашёл глюк в пистолетах - если их неправильно использовать ничего не палучается и даже ошибок в консоли нету


    Напишите сначала просто js. Если вам непременно нужно запихнуть его в атрибут - то сделайте следующие замены (aka htmlspecialchars($code, ENT_QUOTES)):
    Code:
    &  =>  &amp;
    <  =>  &lt;
    >  =>  &gt;
    "  =>  &quot;
    '  =>  &#39;
    P.S. На самом деле автору пофиг совершенно :)
     
    1 person likes this.
  14. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    В экранировании символов в разметке.

    Эта штука называется HTML. А что значением параметра является JS-код(наш случай), адрес ит.д. - разницы никакой.

    Я так и пишу. Потому что так правильно.
    Твой вариант с \" же не работает.

    У нас язык форума - русский, а не "олбанске", так что будь добр изучить ссылку.