此问题提供了识别长词的有效解决方案: Regex to parse long words
然后我如何在设定值处截断它们并附加“...”
基本上,我想在长字符串上应用preg_replace并截断任何非常长的单词(不截断整个字符串 - 只是长字)。
正则表达式应该是PHP。
答案 0 :(得分:3)
编辑:这对我有用
$pattern = "/(?<=(\s\w{10}))(\w*\s)/";
此模式有效地匹配任何单词字符后跟空格,前面有空格和10个单词字符。
然后就这样打电话:
preg_replace($pattern,"... ",$string);
希望有所帮助:)
已编辑:实际上应使用\s
代替空格,这将匹配任何空白字符。
答案 1 :(得分:2)
我想这个正则表达式可以解决问题。 我使用php 5.3.6测试并且工作正常。
$pattern = "/(\\b\\w{10})\\w+\\b/";
echo preg_replace($pattern, "$1...", "pequeno palavramedia palavrabemgrandemesmo\n");
{10}
在哪里,您应该替换最大允许大小而不替换。如果您希望最大字长为N,则应使用{N-3}
,因为点的长度。
对于大字符串应该运行正常,因为它描述了常规语言,运行时间应该是O(n)。当然,这取决于正则表达式的实现。