我正在使用Prism.js插件。我有一个文本字段,您可以在其中键入/粘贴代码,单击"提交,"它将显示在textarea下面的div中。我还提供了一个下拉列表,您可以从列表中选择您正在使用的语言。一切都很好,除了任何< >标签不显示(即html标签,C / C ++中的预处理器指令等)。有谁知道我是否错过了下载页面的插件? 我已经把它带到了哪里,而不是用
指定一种特定的语言<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'];
}
这是一个屏幕截图,显示代码有效,但&lt;&gt;除外标记:
答案 0 :(得分:1)
我从this StackOverflow question发现任何&#39;&lt;&#39;或者&#39;&gt;&#39;必须用
替换字符< and >
分别。由于文本是动态的,这需要一些思考......
这是解决我的问题的原因。我使用php中的str_replace()函数来查找&#39;&lt;&#39;或者&#39;&gt;&#39;并替换为这些字符。如果有人在PHP中遇到同样的问题,这是执行此操作的代码:
$user_code = str_replace(array('<','>'), array('<', '>'), $_POST["code_input"]);
为了展示它的外观,这里是结果的截图:
我还可以做一个关联数组以提高可读性:
$user_code = strtr($_POST['code_input'], [
'<' => '<',
'>' => '>'
]);
两者产生相同的结果。繁荣。 : - )