регулярное выражение для усечения длинных слов и добавления многоточий


Этот вопрос имеет эффективные решения для определения длинных слов: Регулярное выражение для разбора длинных слов

Как бы я тогда усек их по заданному значению и добавил "..."

В принципе, я хочу применить preg_replace к длинной строке и обрезать любые очень длинные слова (не обрезать всю строку - только длинные слова).

Тип регулярного выражения должен быть PHP.

Author: Community, 2011-07-28

2 answers

Редактировать: Это работает для меня

$pattern = "/(?<=(\s\w{10}))(\w*\s)/";

Этот шаблон эффективно соответствует любым словесным символам, за которыми следует пробел, которым предшествовали пробел и 10 словесных символов.

Затем просто назовите что-то вроде этого:

preg_replace($pattern,"... ",$string);

Надеюсь, это поможет:)

Отредактировано: На самом деле следует использовать \s вместо пробела, это будет соответствовать любым пробелам.

 3
Author: CookieMonster, 2011-07-28 12:27:23

Я думаю, что это регулярное выражение делает свое дело. Я протестировал 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). Конечно, это зависит от реализации регулярного выражения.

 2
Author: msbrogli, 2011-07-28 03:53:42