这个问题有有效的解决方案,用于识别长字: Regex to parse long words正则表达式来截断长单词和追加省略号
我怎么会那么在设定值截断他们并追加“...”
基本上,我想在一个长字符串上应用preg_replace并截断任何很长的单词(而不是截断整个字符串 - 只是长单词)。
正则表达式的味道应该是PHP。
这个问题有有效的解决方案,用于识别长字: Regex to parse long words正则表达式来截断长单词和追加省略号
我怎么会那么在设定值截断他们并追加“...”
基本上,我想在一个长字符串上应用preg_replace并截断任何很长的单词(而不是截断整个字符串 - 只是长单词)。
正则表达式的味道应该是PHP。
编辑:这对我的作品
$pattern = "/(?<=(\s\w{10}))(\w*\s)/";
这种模式有效地匹配任何单词字符的字符后面有一个空格,空格和10名字的字符之前被认为。
然后只需要调用是这样的:
preg_replace($pattern,"... ",$string);
希望帮助:)
编辑:其实应该使用\s
而不是空间,这将匹配任何空白字符。
我想这个正则表达式是有用的。 我使用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)。当然,这取决于正则表达式的实现。
这找到> 10个字符,但不截断/追加。我正在寻找的东西是需要的:abcdefghijklmnop - > abcdefghij ... – lcdservices
@布莱恩编辑,''乔布jopjopjopjopjop joop“'返回'joop jopjopjopj ... joop'现在:) – CookieMonster
更接近 - 我越来越一个奇怪的地方,它只能代替字符串后面是换行符。当它被替换时,它将删除换行符。所以: longwordlongword longwordlongword - > longwordlo ... longwordlo ... – lcdservices