正则表达式截断长词并附加省略号

时间:2011-07-28 03:10:53

标签: php regex truncate

此问题提供了识别长词的有效解决方案: Regex to parse long words

然后我如何在设定值处截断它们并附加“...”

基本上,我想在长字符串上应用preg_replace并截断任何非常长的单词(不截断整个字符串 - 只是长字)。

正则表达式应该是PHP。

2 个答案:

答案 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)。当然,这取决于正则表达式的实现。