2010-07-29 49 views
0

我有一個奇怪的問題。我有一個電子郵件組將電子郵件發送到留言板。電子郵件的單詞包裝各不相同。在雅虎,消息傾向於填充留言板上的整個容器。但在所有其他郵件客戶端中,只有部分容器寬度被填充,因爲原始郵件已被包裝。我希望所有電子郵件都能填充容器的整個寬度。我想到了兩種可能的解決方案:CSS或消除換行符的正則表達式。因爲我只是一個車庫修理工(在這些事情上),我根本無法完成工作。有什麼幫助嗎?在容器中控制單詞包裝

這是顯示問題的鏈接:http://seanwilson.org/forum/index.php?t=msg&th=1729&start=0&S=171399e41f2c10c4357dd9b217caaa3f (比較「sean」和「rob」的消息。一個填充容器,另一個不填充)。

任何你可以建議如何讓所有的郵件,以填補集裝箱?

回答

0

你給的太少信息 - 什麼編程語言,你使用 - PHP/Java腳本/有什麼不同?

我想你只需要更換\ n \ r和\ r \ n,其中的空白。對於PHP代碼:

$nowrap = str_replace('\r\n', ' ', $nowrap); 
$nowrap = str_replace('\r', ' ', $nowrap); 
$nowrap = str_replace('\n', ' ', $nowrap); 

你可以做類比其他語言(JS見方法與string.replace:http://www.tizag.com/javascriptT/javascript-string-replace.php)。

0

根據不同的情況(人似乎總是添加段落之間的2個換行符),你可以說這個問題是:更換不直接之前或之後有一個空格換行的所有換行符。

//just to be sure, remove \r's 
$string = str_replace("\r",'',$string); 
$string = preg_replace('/(?<!\n)\n(?!\n)/',' ',$string); 

雖然允許\ r的:

$string = preg_replace('/(?<!\r|\n)\r?\n(?!\r|\n)/',' ',$string); 

編輯:請不要介意:不使用:當人們傾向於寫在段落他們的電子郵件文本,你打破他們的簽名/簽收與這個正則表達式。人們可以擺弄推定之前最小線路長度「易碎」(我選63),但繁瑣的將是:

$string = preg_replace('/([^\r\n]{63,})\r?\n(?!\r|\n)/','$1 ',$string); 

的問題是:有沒有保證斷行並不打算。有了一個無可爭議的線條長度,你可以將它建立在普通用戶的基礎上,但問題是:他們更關注什麼:打破&非破壞性段落或破壞他們的簽名之間的差異?

0

感謝您找回這麼快!

討論板使用php(以及CSS)。唯一的麻煩是,我對自己編程的能力缺乏一些限制。如果我以我目前的技術水平來做到這一點,我只有兩種選擇。在PHP中使用

  1. 預浸替換。討論板允許我們從控制面板執行此操作。所以如果我可以用一個preg-replace語句來做,它應該可以工作。

將Wrikken的解決方案的工作,如果我不刪除\ r的?因爲這似乎是現貨。 (可以將\ r添加到預替換?)

  1. 我希望這個解決方案可以通過某種css屬性。我想這是不可能的。

非常感謝您的幫助!

[注意:非常感謝您的幫助!解決方案工作!我把這個數字改成了53左右。它需要變小一點。我不關心一個罕見的長簽名線可能會失去它的回報。這是一個完整的消息框支付一小筆費用!你輕鬆地節省了我幾天的學習時間,肯定會讓你感到沮喪,非常感謝你的快速解決。我很高興看到我在這裏得到的幫助。]

+0

我可以在裏面工作,它只是變得難以辨認,我不認爲你需要\ r,在網絡上。 – Wrikken 2010-07-29 22:19:05