如何从字符串中删除长字

时间:2010-02-25 19:31:02

标签: php regex

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

5 个答案:

答案 0 :(得分:4)

为什么要删除用户写的内容?相反,将它包装到一个新行 - PHP中有一个函数来执行此操作,称为wordwrap

答案 1 :(得分:3)

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

例如:

div {    溢出:隐藏; }

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

以下是有关CSS溢出的更多信息: http://www.w3schools.com/css/pr_pos_overflow.asp

答案 2 :(得分:3)

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

编辑:根据Tim P的建议更新,\ S匹配任何非空格字符(与[^\s]相同)

此外,这是一个更好的方法,结合使用wordwrap的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);

答案 3 :(得分:0)

如果这是一个非常长的网址怎么办?无论如何,为什么不将文本与有效的URL匹配,只接受那些?查看some php-regex info on URLs,了解它们的工作原理。 Regular Expressions Cookbook也有很好的URL匹配章节。

答案 4 :(得分:0)

@Rob小心使用REGEX。表现了望。