2011-05-06 13 views
0

我正在使用CKEditor並且我找到/修改了一個用於計算字符數的插件。使用PHP限制HTML文本中特定數字上的字符

我有優質和基本的用戶。 基本用戶被限制爲1000個字符,並且獎金是無限的,但基本可以寫預覽/測試等全文(這是客戶端規格,所以不能改變)。

當我顯示例如在CKEditor中有1000個1000個字符的文本,我想要保存在DB 1500字符中,但僅顯示其中的1000個文本輸出

但是strlen和相關函數將HTML標記計數爲字符,我不想要這樣做。我也不想剝奪他們,因爲我會失去格式。

有沒有辦法確保限制將被應用,而且所有的標籤將保持(在PHP中)

謝謝...

+0

「中斷」任意HTML中間的文本並不重要。首先,您必須找到最終達到1000個文本字符的文本節點,然後您必須從該點開始刪除dom中的所有文本節點,以便HTML文檔的結構保持有效,但沒有更多內容在截止點之後。 – 2011-05-06 21:45:54

回答

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. 
+2

你應該真的做'html_entity_decode(strip_tags($ theHTML))'來減少實體,例如'"'變成'''' – webbiedave 2011-05-06 21:02:15

+0

長度是容易的部分,我想限制它們的長度......有問題! – Kostas 2011-05-06 21:17:35

+0

改變標題以使其更清楚! – Kostas 2011-05-06 21:18:57

0

這段代碼我先前使用:http://www.php.net/manual/en/function.substr.php#92063此功能substracts字符(FE 0〜1000),但完整保留HTML標記。