Регулярное выражение обрезать в конце слово с многоточием

Digdug
На сайте с 11.07.2012
Offline
119
1059

Всем привет.

Есть строка:

$txt = "Трамп парам парам. Парам param. Парам...";

Хочу удалить " Парам...", используя регулярка. Уже третий час пошел, как я мучаюсь над этим. Из последнего, что пробовал: \.\s\w(.{3,4}) , вообще ничего не отображает.

Помогите :rolleyes:

S
На сайте с 30.09.2016
Offline
469
#1

А "Трамп" не надо удалить? 🤣

Извините за флуд, телевизора насмотрелся... :)

По теме: регулярка используется для поиска/замены шаблонных(типовых) выражений. Что искать-то надо? Именно это слово? Любое слово? Любое выражение после точки?

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
Digdug
На сайте с 11.07.2012
Offline
119
#2
Sitealert:
А "Трамп" не надо удалить? 🤣
Извините за флуд, телевизора насмотрелся... :)

По теме: регулярка используется для поиска/замены шаблонных(типовых) выражений. Что искать-то надо? Именно это слово? Любое слово? Любое выражение после точки?

На выходе я хочу получить "Трамп парам парам. Парам param."

(.*)\b.{3} - такая регулярка удаляет в конце три точки, но оставляет слово и пробел.

S
На сайте с 30.09.2016
Offline
469
#3

А если на входе будет строка

$txt = "Трамп парам парам. Парам param. Парам парам..."; ?

Digdug
На сайте с 11.07.2012
Offline
119
#4
Sitealert:
А если на входе будет строка
$txt = "Трамп парам парам. Парам param. Парам парам..."; ?

Это тоже надо учитывать)) Пока вот такую регулярку сделал: /(.*)\.\s\b.{3}/ui и она работает, но теперь нужно и ваш вариант смотреть.

S
На сайте с 30.09.2016
Offline
469
#5

Чё-то не отвечает товарисч...🍿

Ладно сами выбирайте:

Вариант, когда удаляется последнее неполное слово:

<?php

$txt = "Трамп парам... парам. Парам param. Па рам...";
$pat = "/(.*) .*\.{3}$/u";
$txt = preg_replace($pat, "$1", $txt);
echo $txt;
Вариант, когда удаляется вся фраза после последней точки:
<?php

$txt = "Трамп парам.... парам. Парам param. Па рам...";
$pat = "/(.*\.).*\.{3}$/u";
$txt = preg_replace($pat, "$1", $txt);
echo $txt;
А вообще, как я понимаю, это вступительный текст статьи. Там можно и строковыми функциями отработать: найти последнее вхождение точки или пробела и отрубить хвост.

Примерно так:

<?php

$txt = "Трамп парам.... парам. Парам param. Па рам...";
$txt = rtrim(substr( $txt, 0, strrpos( $txt, ' ')));
echo $txt;
Гораздо проще и менее ресурсоёмко. Зачем кувалдой гвоздики забивать?
FM
На сайте с 14.12.2015
Offline
18
#6

Можно и с помощью JS удалить без регулярок и с ними, тут правильно сказали, все зависит от алгоритма того что нужно удалять, Вы же не эти трам парам удалять то будете на практике...

C
На сайте с 04.02.2005
Offline
277
#7

preg_replace("/(.*)\s[\w]*[.]{3}$/", "$1", $input_lines);

Skom
На сайте с 02.12.2006
Offline
166
#8

preg_replace("|[ ]+[\w]+\.{2,}$|u","",$txt);

Cras amet qui numquam amavit quique amavit cras amet

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий