регулярное выражение для сокращения длинных слов и добавления эллипсов - PullRequest
5 голосов
/ 28 июля 2011

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

Как бы мне затем обрезать их до заданного значения и добавить "..."

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

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

Ответы [ 2 ]

3 голосов
/ 28 июля 2011

edit: Это работает для меня

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

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

Тогда просто позвоните примерно так:

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

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

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

2 голосов
/ 28 июля 2011

Полагаю, это регулярное выражение помогает.Я тестировал с использованием php 5.3.6 и работал нормально.

$pattern = "/(\\b\\w{10})\\w+\\b/";
echo preg_replace($pattern, "$1...", "pequeno palavramedia palavrabemgrandemesmo\n");

Где {10} Вы должны заменить на максимально допустимый размер без замены.Если вы хотите максимальный размер слова N, вы должны использовать {N-3} из-за длины точек.

Он должен работать нормально для больших строк, потому что он описывает обычный язык и время выполнения должноБыть на).Конечно, это зависит от реализации регулярных выражений.

...