更换<pre> Element</pre>中的特殊字符的问题

时间:2015-03-11 19:24:10

标签: javascript jquery

我正在尝试使用jQuery插件在This Demo突出显示我的代码段,但浏览器假设

<pre class="php">
  <?php     
      echo "My first PHP script!"; 
  ?> 
 </pre>

是最初的PHP代码!现在解决方案正在取代所有&lt;与&lt;和&gt;与&gt;

<pre class="php"></pre>

现在,请您告诉我如何使用jQuery替换所有&lt;和&gt;在加载页面之前,使用&lt;&gt;内的字符?

由于

2 个答案:

答案 0 :(得分:1)

因此,您获得了带有<?标记的数据,最好是将代码服务器端的输出替换为&lt;&gt;,但如果您要查找脏js解决方案,那么将是:

$('.php').each(function() {
    var $this=$(this);
    $this.text($this.html().replace(/\<\!--\?([\s\S]*?)-->/g,'<?$1>'));
});

http://jsfiddle.net/oceog/x974w2d9/

我不记得是否有任何浏览器将<?替换为<!--?但Chrome确实替换了{{1}}。如果您有一些随机示例,例如:http://jsfiddle.net/oceog/x974w2d9/2/

,js解决方案将无效

答案 1 :(得分:0)

  

现在,请您告诉我如何使用jQuery替换所有&lt;和&gt; with&lt;中的字符和&gt;在加载页面之前?

问题在于这个问题背后的假设。您无法使用jQuery在页面加载之前进行此操作,因为jQuery在页面在浏览器中加载后执行。所以你的PHP正在执行,所有jQuery都会看到:

<pre class="php">
  My first PHP script!
</pre>

您需要确保字符串使其成为输出而不是执行。这样的事情应该有效:

<pre class="php">
  <?php
      $snippet = <<<EOT
<?php
    echo "My first PHP script!";
?>
EOT;
      echo $snippet;
  ?>
</pre>