Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP限制HTML文本中特定数字上的字符_Php_Ckeditor_Character_Maxlength - Fatal编程技术网

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

使用PHP限制HTML文本中特定数字上的字符,php,ckeditor,character,maxlength,Php,Ckeditor,Character,Maxlength,我正在使用CKEditor,我发现/修改了一个计算字符数的插件 我有高级和基本用户。 基本用户限制为1000个字符,高级用户不受限制,但基本用户可以编写预览/测试等的全文(这是客户端规范,因此无法更改) 当我在CKEditor中显示例如1000个字符中的1500个时,我想保存在DB 1500字符中,但在文本输出中仅显示其中的1000个字符 但是strlen和相关函数将HTML标记计算为字符,我不希望这样。此外,我不想剥夺他们,因为我会失去格式 是否有一种方法可以确保应用限制,但所有标记都将保持(

我正在使用CKEditor,我发现/修改了一个计算字符数的插件

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

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

但是strlen和相关函数将HTML标记计算为字符,我不希望这样。此外,我不想剥夺他们,因为我会失去格式

是否有一种方法可以确保应用限制,但所有标记都将保持(在PHP中)

谢谢…

试试看

$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.