PHP preg_replace()只保留大写的单词

时间:2011-02-28 01:46:56

标签: php preg-replace special-characters uppercase digit

如何使用preg_replace只保留大写,数字,特殊字符或大写第一个字母但大小不超过3个字符的单词。

例如:

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 M-W 31AY97KV643 => YM 84 M-W 31AY97KV643

(Tatata)(Tatat)Yard-Man YM 84 M-W 31AY97KV643 => YM 84 M-W 31AY97KV643

提前致谢。

2 个答案:

答案 0 :(得分:1)

preg_replace('|\b([A-Z][a-z][a-z][a-z][a-z\-]*)\b|','',$text);

这个适用于您的大多数示例

答案 1 :(得分:0)

这将是一种简单的白名单方法。而不是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,了解一些可能有助于设计正则表达式的好工具。