·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

php正则表达式匹配空格 中英文逗号替换为英文逗号

700 2
发表于 2022-5-19 18:53:38 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
为了能够正确识别全角空格、中文空格、全角逗号、连续空格在网上找了好所正则表达式,效果都不理想,而自己对正则表达式又是一知半解,于是把网上找到的表达式拿过来,稍作修改,综合到一起,形成了下面得函数,虽然写的很笨拙,但却是有效的。

简要说明: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;

}

有谁愿意指点一下,写个简洁的代码,不胜感激!
我要说一句 收起回复

评论2

Discuz智能体Lv.8 发表于 2025-3-20 03:24:45 | 查看全部
你可以通过一个更简洁的正则表达式来实现这个功能。以下是一个优化后的版本,它能够处理全角空格、中文空格、全角逗号以及连续空格,并将它们替换为英文逗号:

  1. function maktag($tags) {
  2.     // 替换全角空格、中文空格、全角逗号为英文逗号,并去除连续空格
  3.     $tags = preg_replace('/[\s ,]+/u', ',', $tags);
  4.    
  5.     // 去除首尾的逗号
  6.     $tags = trim($tags, ',');
  7.    
  8.     return $tags;
  9. }
复制代码


### 代码解释:
1. **`preg_replace('/[\s ,]+/u', ',', $tags)`**:
   - `[\s ,]+`:这个正则表达式匹配所有空格(包括全角空格 `\s` 和中文空格 ` `)以及全角逗号 `,`。`+` 表示匹配一个或多个连续的这些字符。
   - `u` 修饰符:确保正则表达式正确处理 UTF-8 编码的字符(如中文空格和全角逗号)。
   - 将所有匹配到的字符替换为英文逗号 `,`。

2. **`trim($tags, ',')`**:
   - 去除字符串首尾的逗号,确保最终结果不会有多余的逗号。

### 示例:
  1. $tags = "这是一个 测试,全角空格 和全角逗号, 还有连续空格  ";
  2. echo maktag($tags);
  3. // 输出: 这是一个,测试,全角空格,和全角逗号,还有连续空格
复制代码


这个版本的代码更加简洁,并且能够处理你提到的所有情况。如果你有其他特殊需求,可以在此基础上进一步调整正则表达式。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-20 22:51:48 | 查看全部
你可以通过一个更简洁的正则表达式来实现这个功能。以下是一个优化后的版本:

  1. function maktag($tags) {
  2.     // 替换全角空格、中文空格、全角逗号为半角逗号
  3.     $tags = preg_replace('/[\s ,]+/u', ',', $tags);
  4.    
  5.     // 去除首尾的逗号和空格
  6.     $tags = trim($tags, ', ');
  7.    
  8.     // 去除连续的逗号
  9.     $tags = preg_replace('/,+/', ',', $tags);
  10.    
  11.     return $tags;
  12. }
复制代码


### 解释:
1. **`preg_replace('/[\s ,]+/u', ',', $tags);`**:
   - `[\s ,]+`:匹配所有空格(包括全角空格、中文空格)、全角逗号。
   - `u`:表示使用 UTF-8 编码,确保能正确处理中文字符。
   - 将所有匹配到的空格和全角逗号替换为英文逗号。

2. **`trim($tags, ', ');`**:
   - 去除字符串首尾的逗号和空格。

3. **`preg_replace('/,+/', ',', $tags);`**:
   - 去除连续的逗号,确保每个逗号之间没有多余的逗号。

### 示例:
  1. $tags = " 测试 , 全角空格 , 中文逗号 , 连续空格  , 全角逗号 ";
  2. echo maktag($tags);
复制代码


### 输出:
  1. 测试,全角空格,中文逗号,连续空格,全角逗号
复制代码


这个函数更加简洁,并且能够处理你提到的所有情况。如果你有其他特殊需求,可以在此基础上进一步调整。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:18.223.159.203,GMT+8, 2025-4-4 05:42 , Processed in 0.341047 second(s), 84 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表