替换<pre>元素中的特殊字符的问题

Issue on Replacing Special Characters in a <pre> Element

本文关键字:特殊字符 问题 pre 替换 元素      更新时间:2023-09-26

我正在尝试使用jQuery插件在此演示中突出显示我的片段,但浏览器假设

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

是一个原来的PHP代码,它就是! 现在的解决方案是用&lt;替换所有<,用&gt;替换>

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

现在你能告诉我如何在加载页面之前使用 jQuery 用&lt;&gt;替换 jQuery 中的所有<和>字符吗?

谢谢

因此,您获得了带有<?标签的数据,对您来说更好的是用&lt;&gt;替换代码服务器端的输出,但是如果您寻找脏的js解决方案,它将是:

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

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

我不记得是否有任何浏览器将<?替换为<!--?但 chrome 可以。如果你有一些随机的例子,js 解决方案将不起作用,例如:http://jsfiddle.net/oceog/x974w2d9/2/。

现在,您能否告诉我如何在加载页面之前使用jQuery将<和>字符替换为<和>?

问题在于这个问题背后的假设。您不能在页面加载之前使用 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>