PHP preg_replace () Оставляйте только слова в верхнем регистре - PullRequest
0 голосов
/ 28 февраля 2011

Как можно оставить только слова в верхнем регистре, цифры, специальные символы или слова, где первая буква в верхнем регистре, но содержит не более 3 символов, с preg_replace.

Например:

Portocjnk Karaer HDS-C 7/11, 9/15, 8/15-E => HDS-C 7/11, 9/15, 8/15-E

Karcher Karcher B 140 R Bp => B 140 R Bp

Karcher Karcher B 140 R Bsp Trr => B 140 R Bsp Trr

Tatata Tatat Yard-Man YM 84 MW 31AY97KV643 => YM 84 МВт 31AY97KV643

(Tatata) (Tatat) Yard-Man YM 84 МВт 31AY97KV643 => Гм 84 МВт 31AY97KV643

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 28 февраля 2011
preg_replace('|\b([A-Z][a-z][a-z][a-z][a-z\-]*)\b|','',$text);

этот будет работать с большей частью вашего примера

0 голосов
/ 28 февраля 2011

Это был бы упрощенный подход белого списка.Вместо preg_replacing это сначала извлечет нужные части.И после этого массив $ result должен быть повторно объединен.

preg_match_all('#\b[A-Z\d][A-Z\d/,-]*\b|\b(?<!-)[A-Z][a-z]{1,2}\b#', $str, $result);
$result = implode(" ", $result[0]);

Возможно, вам потребуется добавить еще несколько «специальных» символов во второй [...] класс символов.

Извлечьhttps://stackoverflow.com/questions/89718/is-there-anything-like-regexbuddy-in-the-open-source-world для некоторых хороших инструментов, которые могут помочь в разработке регулярных выражений.

...