如果用户键入一个非常长的字符串,它不会移动到第二行,并会破坏我网站上的页面。如果该字符串不是URL,我如何获取该字符串并将其完全删除?
答案 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。表现了望。