控制容器中的Word Wrap

时间:2010-07-29 20:47:17

标签: regex css word-wrap

我有一个特殊的问题。我有一个电子邮件组,可以将电子邮件发送到留言板。电子邮件的自动换行各不相同。在雅虎,消息往往填充留言板上的整个容器。但是在所有其他邮件客户端中,只填充了容器宽度的一部分,因为原始邮件已被包装。我希望所有电子邮件都填满容器的整个宽度。我想到了两种可能的解决方案:CSS或消除换行符的正则表达式。因为我只是一个车库技师(在这些事情上),我根本无法完成工作。有任何帮助吗?

以下是显示问题的链接:http://seanwilson.org/forum/index.php?t=msg&th=1729&start=0&S=171399e41f2c10c4357dd9b217caaa3f (比较“肖恩”和“抢”的信息。一个填充容器,另一个不填充。)

你们是否可以建议如何让所有邮件填满容器?

3 个答案:

答案 0 :(得分:0)

您提供的信息太少 - 您使用的是哪种编程语言 - PHP / Javascript /有什么不同?

我认为你只需要用空格替换\ 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)。

答案 1 :(得分:0)

根据情况(人们似乎总是在段落之间添加2个换行符),您可以说问题是:替换所有不直接在带有空格的换行符之前或之后的换行符。

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

允许\ r's:

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

编辑:没关系:不要使用:虽然人们倾向于在段落中写下他们的电子邮件文本,但使用此正则表达式打破他们的签名/签名。在认为它“易碎”之前,人们可以用最小的线长来调整(我选择了63),但是它会很狡猾:

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

问题是:无法保证不打算使用换行符。使用简洁的线路长度,你可以将它建立在普通用户的基础上,但问题是:他们更关心的是什么:破坏与分析之间的区别。不间断的段落,或破坏他们的签名?

答案 2 :(得分:0)

感谢您快速回来!

讨论板使用php(以及CSS)。唯一的麻烦是我修改程序的能力有限。如果我在目前的技能水平上这样做,我只有两种选择中的一种。

  1. 在php中使用preg-replace。讨论板允许我们从控制面板执行此操作。所以如果我能用一个preg-replace语句来做它,它应该可以工作。
  2. 如果我不移除\ r,那么Wrikken的解决方案是否有效?因为这似乎是现场。 (可以将\ r添加到preg-replace中吗?)

    1. 我曾希望解决方案可以通过某种css属性来实现。我想这是不可能的。
    2. 非常感谢你的帮助!

      [注意:非常感谢你的帮助!解决方案有效!!!我将数字改为53左右。它需要更小一些。我不在乎稀有的长签名线可能会失去回车。这是一个完整的消息框支付的小价格!你轻松地为我节省了几天学习的东西,这些东西一定会让人感到沮丧,非常感谢你快速解决这个问题。我在这里收到的帮助很高兴。]