2017-02-16 96 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;' 
]); 

兩者都產生相同的結果。繁榮。 :-)