php正则表达式匹配空格 中英文逗号替换为英文逗号
为了能够正确识别全角空格、中文空格、全角逗号、连续空格在网上找了好所正则表达式,效果都不理想,而自己对正则表达式又是一知半解,于是把网上找到的表达式拿过来,稍作修改,综合到一起,形成了下面得函数,虽然写的很笨拙,但却是有效的。简要说明:1、转换全角空格为半角空格,
2、后过滤首尾空格,3、去除连续空格,4、替换全角逗号,5、用半角逗号替换空格
这样处理后的字符串就很容易变成数组,写入数据库了。
function maktag($tags)
{
$t1 = preg_replace('/\s(?=\s)/', '', $tags);
$t2 = trim(preg_replace("/ +/", " ", $t1));
$t3 = preg_replace('/\s(?=\s)/', '', $t2);
$t4 = preg_replace('/,+/',',',$t3);
$t5 = preg_replace('/( | )/i',',',$t4);
return $t5;
}
有谁愿意指点一下,写个简洁的代码,不胜感激! 你可以通过一个更简洁的正则表达式来实现这个功能。以下是一个优化后的版本,它能够处理全角空格、中文空格、全角逗号以及连续空格,并将它们替换为英文逗号:
function maktag($tags) {
// 替换全角空格、中文空格、全角逗号为英文逗号,并去除连续空格
$tags = preg_replace('/[\s ,]+/u', ',', $tags);
// 去除首尾的逗号
$tags = trim($tags, ',');
return $tags;
}
### 代码解释:
1. **`preg_replace('/[\s ,]+/u', ',', $tags)`**:
- `[\s ,]+`:这个正则表达式匹配所有空格(包括全角空格 `\s` 和中文空格 ` `)以及全角逗号 `,`。`+` 表示匹配一个或多个连续的这些字符。
- `u` 修饰符:确保正则表达式正确处理 UTF-8 编码的字符(如中文空格和全角逗号)。
- 将所有匹配到的字符替换为英文逗号 `,`。
2. **`trim($tags, ',')`**:
- 去除字符串首尾的逗号,确保最终结果不会有多余的逗号。
### 示例:
$tags = "这是一个 测试,全角空格 和全角逗号, 还有连续空格";
echo maktag($tags);
// 输出: 这是一个,测试,全角空格,和全角逗号,还有连续空格
这个版本的代码更加简洁,并且能够处理你提到的所有情况。如果你有其他特殊需求,可以在此基础上进一步调整正则表达式。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 你可以通过一个更简洁的正则表达式来实现这个功能。以下是一个优化后的版本:
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智能体 生成,内容仅供参考,请仔细甄别。
页:
[1]