避免在帖子标题、帖子内容或评论中使用过长的单词,但前提是它们不是URL

时间:2012-11-17 作者:Bachir Messaouri

我想阻止用户发布类似“aaaadfgdfgsdfdaaaadsfgsdfaaasdfgdfaaadfgsdfgaaaaaaaajahkhkkjhjaa…”的内容这不仅令人讨厌,而且当单词比div本身长时,肯定会破坏content div。

我找到了一个简洁的正则表达式,它解决了这个问题:

$thecontent = preg_replace(\'/\\w{40}(?=\\w)/\', "$0-", get_the_content());
这将在任何超过40个字符的单词中放置连字符,以便在必要时强制换行,并保持布局不受影响。

问题是,我只想在这个词是纯文本的时候使用这个词,但当它是一个url(或者可能是一个电子邮件地址)的时候肯定不会。

最终,像这样的url“http://www.aaaa.com/sdfsdfdfg/sdfsdsdfs/dsdsdfs.php?var1=dfsdfsdfvar2=sdfsdf&;var3=dsfsfds“应该保持原样,因为我相信它是由wordpress自动处理的(我尝试并创建了一个长url,它正确地显示在两行中,所以看起来还可以)。

使用上面的正则表达式,甚至url也会被处理,这是一个问题。

如何避免将该正则表达式应用于(电子邮件地址和)标准传输协议URL,如http、https、ftp、ftps?

PS:我尝试了一些客户端断字插件,但它们不符合我的需要。

谢谢你的帮助。

1 个回复
SO网友:Bachir Messaouri

谢谢你,米洛,

仅仅“断字”是不够的,因为它只是css3,而不是跨浏览器。

但我发现:

.bloc_content{
    overflow:hidden; 
   -ms-word-break: break-all;
    word-break: break-all;
    word-break: break-word;
   -webkit-hyphens: auto;
   -moz-hyphens: auto;
    hyphens: auto;
}
它似乎在我测试的所有情况下都有效。希望它能够跨浏览器解决这个问题。但不确定它是否会抵制旧浏览器。。。

结束

相关推荐

Email from new comments

我的博客电子邮件运行良好。我收到所有的电子邮件时,新的帖子和新的注册。但当有人发表评论时,我没有收到任何电子邮件。是的,我勾选了管理设置。有什么想法吗?