擅长:python、mysql、java
<p>我不认为您需要一个成熟的解析器-您只需要将输入字符串标记为以下类型之一:</p>
<ul>
<li>文本</li>
<li>打开标签</li>
<li>结束标记</li>
<li>自动关闭标签</li>
<li>字符实体</li>
</ul>
<p>一旦有了这样的令牌流,就很容易使用堆栈来跟踪需要关闭的标记。我之前确实遇到过这个问题,写了一个小库来做这个:</p>
<p><a href="https://github.com/eentzel/htmltruncate.py" rel="noreferrer">https://github.com/eentzel/htmltruncate.py</a></p>
<p>它对我很好地工作,并且可以很好地处理大多数角落的情况,包括任意嵌套的标记、将字符实体计数为单个字符、返回格式错误的标记等</p>
<p>它将产生:</p>
<pre><code><h1>This is a hea</h1>
</code></pre>
<p>以你为例。这也许可以更改,但在一般情况下很难——如果您试图将其截断为10个字符,但是<code><h1></code>标记没有关闭,比如说,300个字符,怎么办?在</p>