-1

如何使用 preg_replace 仅保留大写字母、数字、特殊字符或第一个字母为大写但包含不超过 3 个字符的单词。

例如:

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

凯驰凯驰 B 140 R Bp => B 140 R Bp

凯驰凯驰 B 140 R Bsp Trr => B 140 R Bsp Trr

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

(塔塔塔) (塔塔塔) Yard-Man YM 84 MW 31AY97KV643 => YM 84 MW 31AY97KV643

提前致谢。

4

2 回答 2

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

这个可以与您的大多数示例一起使用

于 2011-02-28T02:18:55.263 回答
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了解一些可能有助于设计正则表达式的好工具。

于 2011-02-28T02:27:18.200 回答