0

我正在使用CKEditor,我找到/修改了一个计算字符的插件。

我有高级用户和基本用户。基本用户限制为 1000 个字符,高级用户无限制,但基本用户可以为预览/测试等编写全文(这是客户规范,因此无法更改)。

当我在 CKEditor 中显示例如 1000 个字符中的 1500 个时,我想保存在 DB 1500 个字符中,但在文本输出中只显示其中的 1000 个

但是 strlen 和相关函数将 HTML 标记计为字符,我不想要这个。我也不想剥离它们,因为我会丢失格式。

有没有办法确保应用限制但所有标签都将保留(在 PHP 中)

谢谢...

4

2 回答 2

5

尝试

$theHTML='<h2>Hello!</h2>';
$length = strlen ( strip_tags($theHTML) ); //Should be 6
echo "The non-HTML length is: $length";

这只会剥离标签以进行计数。标签永远不会真正丢失。

更新

按照webbiedave的 建议 确实 应该 是

$theHTML='<h2>Hello!</h2>';
$length = strlen ( shtml_entity_decode(strip_tags($theHTML)) ); //Should be 6

//This will not trigger since only the text "Hello!" is only 6 chars.    
if ($length > 10) die('ERROR'); 

echo $theHTML; //Will echo full HTML, even though we checked the length without HTML.
于 2011-05-06T20:52:40.147 回答
0

我之前使用的这段代码:http://www.php.net/manual/en/function.substr.php#92063这个函数减去字符(fe. 0 到 1000),但保持 HTML 标记不变。

于 2011-05-06T22:23:19.753 回答