我正在使用 ApiGen 的引导模板,我想用 Highlight.js 替换默认的源代码视图。
这需要我使用 Nette过滤器删除spans
ApiGen 生成的现有文件。replaceRE
原始代码如下所示:
<pre id="source">
<code>{$source|replaceRE:'~<span class="line">(\s*)(\d+):(\s*)</span>([^\\n]*(?:\\n|$))~','<span id="$2" class="l">
<a href="#$2">$1$2$3</a>$4</span>'|noescape}
</code>
</pre>
该变量$4
包含需要替换的跨度,如下所示:
<span class="xlang"><?php</span>
<span class="php-comment">/**</span>
<span class="php-comment"> * app/Base/Controller.php</span>
<span class="php-comment"> *</span>
<span class="php-comment"> * Local base controller for application.</span>
<span class="php-comment"> */</span>
<span class="php-keyword1">use</span> Illuminate\Foundation\Bus\DispatchesJobs;
等等。
显然代码需要保持不变,但跨度:
<span class="whatever">leave code alone</span>
需要删除。
我尝试了嵌套replaceRE
但从 ApiGen 得到解析错误。
<pre id="source">
<code>{$source|replaceRE:'~<span class="line">(\s*)(\d+):(\s*)</span>([^\\n]*(?:\\n|$))~','<span id="$2" class="l">
<a href="#$2">$1$2$3</a>{$4|replaceRE:'~<span .*?class="(.*?)">~',''|noescape}</span>'|noescape}
</code>
</pre>