替代在博客

时间:2017-01-12 15:21:55

标签: javascript php jquery tinymce

我正在使用 TinyMCE 和PHP / MySql来处理/存储数据。我之前已多次完成它,但在这一次我想用<pre></pre>标签编写示例代码块。问题是要编写html代码,我需要替换我想要为<>显示的代码的&lt;&gt;

我没有找到配置 TinyMCE 的方法,所以我做了一些js来替换和粘贴我的代码示例:

$("#change").click(function(){
  var output = $("#source").val().replace(/</g,"&lt;");
  output = output.replace(/>/g,"&gt;");
  $("#output").val("<pre>"+output+"</pre>");
});

它曾在数据库中插入一次字符串,但我发现当我想要更新它时,在textarea中显示它们后再次更改的实体。因此,要更新到数据库,我需要再次替换字符串的字符。

所以我编写了这个小函数来准备要在PHP中插入数据库的字符串:

function processCode($string_raw,$start,$end) {
    if(preg_match_all("/".$start."(.*?)".str_replace("/","\/",$end)."/s",$string_raw,$matches)) {

        for($i=0 ; $i<count($matches[0]) ; $i++) {
            $processed = htmlentities($matches[1][$i]);
            $string_raw = str_replace(  $matches[0][$i], 
                                        $start.$processed.$end, 
                                        $string_raw);
        }
    }
    return $string_raw;
}

它需要一个字符串:

$raw_string = "This code <pre><b>code</b></pre> is mine";

并替换$star$end标记内的实体。

它很棒,插入和更新,但我还是想知道:

  • 有没有办法配置TinyMCE来执行此操作?
  • 是否有更容易/更温和的方法来解决它?
  • 我错过了什么重要的事吗?

PD:如果你想到这个问题的更好的标题,请现在就让我吧:)。

1 个答案:

答案 0 :(得分:1)

TinyMCE有一个codesample插件,专门设计用于允许人们在其内容中插入代码示例:

https://www.tinymce.com/docs/plugins/codesample/

如果您使用此功能,则不需要所有代码来处理粘贴并将其包装在<pre>标记中。