2013-04-16 58 views
1

在我當前的模板中,我有一大塊來自用戶的文本塊。然後將該塊以600個字符標記拆分並放置在頁面上的特定div上,其餘塊放置在頁面底部附近。這工作正常,但是在帖子開始附近添加了很多鏈接時會出現問題。忽略html標記中的字符,同時計數字符

<a href='...'></a>正在計入總字符數。我總是想在600分割塊。

有沒有一種簡單的方法可以找出html字符的長度?這樣我可以將它們添加到split_length。或任何其他想法?如何完全忽略html字符?

編輯: 我應該清楚我想要的鏈接,留...

+0

如果文本包含HTML,則需要使用HTML解析器來分割它,否則可能會得到不平衡的標籤。你也可以將所有東西都隱藏在N像素以下而不是分裂,這很容易。 –

+0

這不是微不足道的。 RegEx和HTML解析器都不會在這裏幫到你很多。如果我自己嘗試這樣做,我最初可能會使用'strip_tags'來檢查是否有超過600個字符,然後遍歷原始字符串中的字符,不管我是否可數(或標記中),以及哪些標記是「打開「(所以我可以在分裂後關閉它們)。然後繼續走,直到你數了600個可數。 –

回答

1

使用PHP的功能strip_tags()再算上字符。

+0

好吧,我有一個'$ txt'變量,它包含了整個字符串(超過600個字符,幾個段落),而且我每次在600個字符後都會分割它,不管裏面的內容是什麼......所以只需添加' strip_tags()'到我的變量正確拆分它,但刪除鏈接... – patricko

+0

好吧,然後從Adeine的答案看strip_tags()的文檔,你可以傳遞錨標籤作爲第二個參數。然後根據您的規範將[str_replace()](http://php.net/manual/en/function.str-replace.php)應用到定位標記。 – Muavia

0

您可以刪除所有的HTML代碼,並按精確的計數分割文本。爲此,使用方法:

string strip_tags (string $str [, string $allowable_tags ]) 

該函數試圖與給定的海峽刪除所有NUL字節,HTML和 PHP標籤返回一個字符串。它使用相同的標籤剝離 狀態機作爲fgetss()函數。

有關更多信息,請參閱here

+0

我在我的文本塊上使用了'strip_tags',現在我的長度是正確的,但是我的所有鏈接都消失了。 – patricko