如何使用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
提前致谢。
答案 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,了解一些可能有助于设计正则表达式的好工具。