Строковая проблема с добавлением Javascript динамического HTML - PullRequest
3 голосов
/ 14 июня 2011

Я использую PHP для генерации кнопки Javascript, которая добавляет флажок и некоторые другие HTML.

Как правильно избежать этих символов, чтобы включить их в событие onclick?

Я видел, что он предложил преобразовать 'и "в значения ascii, но это, похоже, не помогло.

$tempOutput = "<a href='temp.txt'>\"Happy\"</a>";
$tempOutput = str_replace("'", "&#39;", $tempOutput);
$tempOutput = str_replace('"', "&quot;", $tempOutput);

просто приводит к этому, если вы выводите строку прямо перед использованием:

<a href=&#39;temp.txt&#39;>&quot;Happy&quot;</a>

и это, если вы проверяете элемент страницы:

<a onclick="
                    var divTag = document.createElement('div');
                    divTag.innerHTML = '&lt;a href='temp.txt'&gt;&quot;Happy&quot;&lt;/a&gt;';
                    document.getElementById('extraDiv').appendChild(divTag) ;
                ">test</a>

Я также пытался просто добавить к extraHTML extradiv, но и там не получилось.

Ответы [ 3 ]

3 голосов
/ 14 июня 2011

В основном я использую PHP rawurlencode () и unescape () Javascript:

  <?php
    $tempOutput = '<a href="temp.txt">'.htmlentities('"Happy"').'</a>';
  ?>
  <a onclick="
              var divTag = document.createElement('div');
              divTag.innerHTML = unescape('<?php echo rawurlencode($tempOutput);?>');
              document.getElementById('extraDiv').appendChild(divTag) ;
             ">test</a>
  <div id="extraDiv"></div>

Это также позволит избежать ошибок с другими символами, например, разрывы строк.

0 голосов
/ 14 июня 2011

использовать html_entity_decode

0 голосов
/ 14 июня 2011

Побег, как это

$tempOutput = str_replace(array("'",'"'), array("\'",'&quot;'), $tempOutput);
...