2011-05-04 71 views
2

我有一個字符串,我必須在div中打印它。遞歸剪切字符串

div的寬度是有限的,所以如果很多字符都接近,字符串將從div中退出。

想一想width:30px股利和一個字符串,如hellomynameismarcoandilikemadewebapplicationinmyfreetimes

所以我需要一種函數在PHP上遞歸地切割字符串;我的意思是,削減字符串,並添加一些像<br/>

此處的另一個問題是我的字符串通過htmlentities($string, ENT_QUOTES, "UTF-8");打印,因此<br/>將失敗。

如何在PHP上執行此操作?

編輯我的最終解決方案

function printMyStrings($str, $width) { 
    return ereg_replace("&lt;br/&gt;","<br/>", htmlentities(wordwrap($str, $width, "<br/>", true), ENT_QUOTES, "UTF-8")); 
} 
+0

的這不是「遞歸」的意思,順便說一句。你只是想把一個字符串切成一定長度,通過'htmlentities()'運行,然後追加'
'。我會寫一個正確的答案,但我不知道如何做PHP的第一步(儘管我確信它簡直就是簡單的)。 – CanSpice 2011-05-04 20:47:39

+0

問題是知道文本將佔用的確切寬度。每個瀏覽器和每個用戶將使其呈現不同 – Dutchie432 2011-05-04 20:49:58

+0

@ Dutchie432是的,但我可以評估這個或多或少:) – kwichz 2011-05-04 22:14:12

回答

2

$width下面將硬包裹。 Docs on wordwrap()

$width = 30; 
$wrapped_string = wordwrap("Hellomynameismarcoandilikemadewebapplicationinmyfreetimes.", $width, "\n", TRUE); 

// nl2br to add HTML linebreaks 
echo nl2br($wrapped_string); 
+0

是的,這應該搖滾!預計nl2br將不起作用:我進入htmlentities(),但是作爲@ariel建議我只是放一個空格而不是
或\ n :) – kwichz 2011-05-04 21:16:53

+0

對不起 - 我誤以爲你的字符串已經*已經通過'htmlentites()',而不是在接下來的過濾。 – 2011-05-04 21:18:36

+0

是:)看看我的最終代碼:它應該是完美的;) – kwichz 2011-05-04 22:12:59

2

只需添加一個空格,瀏覽器會照顧打破它爲您

3
chunk_split ($string , 80 ,"<br>");