使用PHP限制HTML文本中特定数字上的字符
我正在使用CKEditor,我发现/修改了一个计算字符数的插件 我有高级和基本用户。 基本用户限制为1000个字符,高级用户不受限制,但基本用户可以编写预览/测试等的全文(这是客户端规范,因此无法更改) 当我在CKEditor中显示例如1000个字符中的1500个时,我想保存在DB 1500字符中,但在文本输出中仅显示其中的1000个字符 但是strlen和相关函数将HTML标记计算为字符,我不希望这样。此外,我不想剥夺他们,因为我会失去格式 是否有一种方法可以确保应用限制,但所有标记都将保持(在PHP中) 谢谢…试试看使用PHP限制HTML文本中特定数字上的字符,php,ckeditor,character,maxlength,Php,Ckeditor,Character,Maxlength,我正在使用CKEditor,我发现/修改了一个计算字符数的插件 我有高级和基本用户。 基本用户限制为1000个字符,高级用户不受限制,但基本用户可以编写预览/测试等的全文(这是客户端规范,因此无法更改) 当我在CKEditor中显示例如1000个字符中的1500个时,我想保存在DB 1500字符中,但在文本输出中仅显示其中的1000个字符 但是strlen和相关函数将HTML标记计算为字符,我不希望这样。此外,我不想剥夺他们,因为我会失去格式 是否有一种方法可以确保应用限制,但所有标记都将保持(
$theHTML='<h2>Hello!</h2>';
$length = strlen ( strip_tags($theHTML) ); //Should be 6
echo "The non-HTML length is: $length";
试一试
我前面使用的这段代码:
http://www.php.net/manual/en/function.substr.php#92063
此函数将字符(fe.0到1000)减为整数,但保留HTML标记不变。我前面使用的这段代码:http://www.php.net/manual/en/function.substr.php#92063
此函数用于减除字符(fe.0到1000)但保留HTML标记不变。你应该真正做HTML\u实体解码(strip\u标记($theHTML))
来减少实体,例如“
变成”
长度是最简单的部分。我想限制它们的长度…有问题了!你应该真正做HTML\u实体解码(strip\u标记)($theHTML))
以减少实体,例如,“
变为”
长度是最简单的部分。我想将它们限制在该长度上……有问题!“中断”在中间HTML中的一些文本是非平凡的。首先你必须找到最终到达1000个文本字符的文本节点,然后你必须从那个点开始删除DOM中的所有文本节点,这样HTML文档的结构仍然有效,但是在截止点之后没有更多的内容。在中间HTML中的一些文本是非平凡的。首先,你必须找到最终到达1000个文本字符的文本节点,然后你必须从那个点开始删除DOM中的所有文本节点,这样HTML文档的结构仍然有效,但是在截止点之后没有更多的内容。
$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.