使用PHP限制HTML文本中特定数字的字符

时间:2011-05-06 20:50:08

标签: php ckeditor character maxlength

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

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

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

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

有没有办法确定是否会应用限制,但所有标签都将保持(在PHP中) ??

...谢谢

2 个答案:

答案 0 :(得分: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.

答案 1 :(得分:0)

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