2017-02-16 99 views
0

我使用Prism.js插件。我有一个文本字段,您可以在其中输入/粘贴您的代码,单击“提交”,它将显示在textarea下面的div中。我还包括一个下拉列表,您可以从列表中选择您正在使用的语言。除了任何<>标签都不显示(即HTML标签,C/C++中的预处理器指令等)之外,一切都很好。有谁知道我是否错过了下载页面上的插件? 我去到哪里,而不是指定一个特定的语言与Prism.js没有显示标记

<pre><code class="language-java"></code></pre> 

我做了它在PHP会从下拉列表中添加类名。

这是我的代码。正如我所说的,一切正常,除了那些标签:

的HTML:

<select required name="language-select" class="form-control" id="language-selector"> 
      <option value="" selected disabled>Language</option> 
      <option value="markup">Markup</option> 
      <option value="apacheconf">Apache Conf</option> 
      <option value="aspnet">ASP.NET</option> 
      <option value="bash">Bash</option> 
      <option value="c">C</option> 
      <option value="csharp">C#</option> 
      <option value="cpp">C++</option> 
      <option value="css">CSS</option> 
      <option value="java">Java</option> 
      <option value="javascript">JavaScript</option> 
      <option value="matlab">MatLab</option> 
      <option value="objectivec">Objective C</option> 
      <option value="perl">Perl</option> 
      <option value="php">PHP</option> 
      <option value="powershell">PowerShell</option> 
      <option value="python">Python</option> 
      <option value="ruby">Ruby</option> 
      <option value="scala">Scala</option> 
      <option value="smalltalk">Smalltalk</option> 
      <option value="sql">SQL</option> 
     </select> 
     <br/> 
     <button id="drive_submit_btn" class="btn btn-md" type="submit">Submit</button> 
    </div> 
</form> 
<div class="show-code"> 
    <script src="custom-js/prism.js"></script> 
    <!-- Get language selection from dropdown and append it to language class. Echo the text as highlighted code --> 
    <pre><code class="language-<?php echo $language?>"><?php echo $user_code; ?></code></pre> 

</div> 

相关PHP:

$user_code = ""; 
$language = ""; 
if (!empty($_POST["code_input"])) { //get input from textarea and dropdown 
$user_code = $_POST["code_input"]; 
$language = $_POST['language-select']; 

}

下面是截图显示代码有效,但<>标签:

之前 “提交”,我选择C语言: Choosing Language

这里是提交后。注意#include是如何遗漏<>标签的?我不知道如何解决这个问题。有什么建议么? enter image description here

回答

0

我从this StackOverflow question发现任何 '<' 或 '>' 字符必须

&lt; and &gt; 

分别进行更换。由于文字是动态的,这花了一些思考.....

以下是固定我的问题。我在php中使用了str_replace()函数来查找任何'<'或'>'的替代项并替换为那些字符。下面是代码来做到这一点的情况下,任何人都跑了同样的问题在PHP中:

$user_code = str_replace(array('<','>'), array('&lt;', '&gt;'), $_POST["code_input"]); 

,并显示出它的外观在视觉上,下面是结果的截图:

screenshot of fixed markup

我也可以做一个关联数组以提高可读性:

$user_code = strtr($_POST['code_input'], [ 
     '<' => '&lt;', 
     '>' => '&gt;' 
]); 

两者都产生相同的结果。繁荣。 :-)