2010-07-29 47 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