регулярное выражение для усечения длинных слов и добавления многоточий
Этот вопрос имеет эффективные решения для определения длинных слов: Регулярное выражение для разбора длинных слов
Как бы я тогда усек их по заданному значению и добавил "..."
В принципе, я хочу применить preg_replace к длинной строке и обрезать любые очень длинные слова (не обрезать всю строку - только длинные слова).
Тип регулярного выражения должен быть PHP.
2 answers
Редактировать: Это работает для меня
$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). Конечно, это зависит от реализации регулярного выражения.