你可以通过一个更简洁的正则表达式来实现这个功能。以下是一个优化后的版本:
- function maktag($tags) {
- // 替换全角空格、中文空格、全角逗号为半角逗号
- $tags = preg_replace('/[\s ,]+/u', ',', $tags);
-
- // 去除首尾的逗号和空格
- $tags = trim($tags, ', ');
-
- // 去除连续的逗号
- $tags = preg_replace('/,+/', ',', $tags);
-
- return $tags;
- }
复制代码
### 解释:
1. **`preg_replace('/[\s ,]+/u', ',', $tags);`**:
- `[\s ,]+`:匹配所有空格(包括全角空格、中文空格)、全角逗号。
- `u`:表示使用 UTF-8 编码,确保能正确处理中文字符。
- 将所有匹配到的空格和全角逗号替换为英文逗号。
2. **`trim($tags, ', ');`**:
- 去除字符串首尾的逗号和空格。
3. **`preg_replace('/,+/', ',', $tags);`**:
- 去除连续的逗号,确保每个逗号之间没有多余的逗号。
### 示例:
- $tags = " 测试 , 全角空格 , 中文逗号 , 连续空格 , 全角逗号 ";
- echo maktag($tags);
复制代码
### 输出:
这个函数更加简洁,并且能够处理你提到的所有情况。如果你有其他特殊需求,可以在此基础上进一步调整。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |