2010-02-25 63 views
0

如果用户键入一个非常长的字符串,它不会移动到第二行,并会在我的网站上打开一个页面。如果该字符串不是URL,我该如何接收该字符串并将其完全删除?如何从字符串中删除一个长字

+1

您可能需要查看''元素。 – zzzzBov 2011-01-04 22:41:08

回答

4

为什么你要删除的用户说什么?相反,它换到一个新行 - PHP中做一个函数,称为wordwrap

+0

但记得将第四个参数设置为true,以便切实切割那些过长的字符串! – Shinhan 2010-02-26 07:35:33

+0

wordwrap将打破整个字符串,而不仅仅是长字。 – Rob 2010-02-27 15:37:48

+0

你没有回答这个问题。请更改问题或更改答案。有无数的理由去除一个长词。不要以为你可以想象/预测每种可能的情景/应用,直到时间结束。也许“肺炎巨噬细胞硅胶囊结合”的45个字符是某些应用的合理限制。 – 2014-01-20 21:27:09

3

你真的想删除这个词,还是只是想阻止它让你的页面布局太宽?如果后者更多,你可以考虑使用CSS来管理溢出。

例如:

DIV { 溢出:隐藏; }

将隐藏任何超出div边界的内容。

下面是关于CSS溢出的详细信息: http://www.w3schools.com/css/pr_pos_overflow.asp

3
// remove words over 30 chars long 
$str = preg_replace('/\S{30,}/', '', $str); 

编辑:每添普的建议更新,\ S任何非空格字符(同[^\s])匹配

而且,这里是集EHDV的建议,使用自动换行更好的办法:

//This will break up the long words with spaces so they don't stretch layouts. 
$str = preg_replace('/(\S{30,})/e', "wordwrap('$1', 30, ' ', true)", $str); 
+1

我建议使用/ S而不是/ w - 这也会捕获带有标点符号,数字和其他特殊字符的长字符串。 – 2010-02-25 20:52:32

+0

$ str = preg_replace('/(\ S {30,})/ e',“wordwrap('$ 1',30,'',true)”,$ str); 什么?你用文字wordwrap命令替换实际的长字符串?你为什么要这样做? – Shinhan 2010-02-26 07:37:41

+0

'e'修饰符评估替换字符串。 – Rob 2010-02-26 14:39:59

0

@Rob护理使用REGEX。性能了望。