当前位置: 首页 > news >正文

PHP preg_replace正则表达式涉及汉字乱码

一、需求

PHP preg_replace,替换省、市、区为空

二、实现

1、使用表达式["省","市","自治州","自治区"],出现了乱码

        $text = "浙江省";$pattern = '/["省","市","自治州","自治区"]/';$replacement = '';$result = preg_replace($pattern, $replacement, $text);echo $result;exit;

2、因为是汉字,1表达式的基础上添加/u 修饰符(表示使用 Unicode 编码),这样就不会乱码了;

        $text = "浙江省";$pattern = '/["省","市","自治州","自治区"]/u';$replacement = '';$result = preg_replace($pattern, $replacement, $text);echo $result;exit;

3、低版本php,不支持/u修饰符,可以换成正则表达式(省|市|区),无需添加/u修饰符,即可成功替换。

        $text = "浙江省";$pattern = '/(省|市|区)/';
//        $pattern = '/["省","市","自治州","自治区"]/u';$replacement = '';$result = preg_replace($pattern, $replacement, $text);echo $result;exit;

4、可以不是用正则替换,改为str_replace替换哦

        $text = "浙江省";
//        $pattern = '/["省","市","自治州","自治区"]/u';$replacement = '';
//        $result = preg_replace($pattern, $replacement, $text);$result = str_replace(["省","市","自治州","自治区"],$replacement,$text);echo $result;exit;

三、总结

1、中文汉字、中文字符匹配出现乱码,只针对["省","市","自治州","自治区"]表达式,需要添加/u修饰符,才不会乱码(php高版本支持);
其他表达式,比如(省|市|区),可以随意匹配,不会出现中文乱码。

2、可以使用str_replace代替preg_replace

3、在 PHP 中,使用 u 修饰符允许正则表达式处理 Unicode 字符。这个修饰符告诉 PHP 引擎将模式和目标字符串视为 UTF-8 编码的字符序列,以便正确处理 Unicode 字符。

u 修饰符最早是在 PHP 4.1.0 版本中引入的,并且需要 PHP 在 4.2.3 版本或更高版本的环境中才能正常工作。因此,如果您使用的是 PHP 4.2.3 或更高版本,您就可以放心地在正则表达式中使用 u 修饰符来处理 Unicode 字符。

例如,在处理中文字符时,特别是需要匹配中文字符范围内的内容时,使用 u 修饰符非常有用。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • c++——模板初始识
  • mysql内存和磁盘的关系
  • 数学建模——线性回归模型
  • Apache Doris 基础 -- 数据表设计(数据模型)
  • 充电器快充协议与PW6606快充电压诱骗芯片
  • Linux完整版命令大全(二十一)
  • 前端面试题12-22
  • 惯性测量单元M-G370系列广泛用于工业系统各个领域
  • 工控屏(触摸屏)怎么连接电脑
  • 首发AI新功能 贝锐向日葵远程控制IT精英版助力IT运维
  • Oracle dblink 发现Network 等待事件的分析 enq: KO - fast object checkpoint
  • 【权威出版】2024年电气工程与传感检测技术国际会议(EESDT 2024)
  • 从输入URL到页面加载的全过程
  • 书籍学习|基于SprinBoot+vue的书籍学习平台(源码+数据库+文档)
  • mysql存储地理信息的方法
  • 深入了解以太坊
  • [LeetCode] Wiggle Sort
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 07.Android之多媒体问题
  • IDEA 插件开发入门教程
  • JavaScript设计模式之工厂模式
  • js正则,这点儿就够用了
  • Just for fun——迅速写完快速排序
  • Linux gpio口使用方法
  • Lucene解析 - 基本概念
  • PHP的Ev教程三(Periodic watcher)
  • Vue2 SSR 的优化之旅
  • 多线程事务回滚
  • 关于 Cirru Editor 存储格式
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 理清楚Vue的结构
  • 免费小说阅读小程序
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 用Canvas画一棵二叉树
  • 原生Ajax
  • postgresql行列转换函数
  • 函数计算新功能-----支持C#函数
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #《AI中文版》V3 第 1 章 概述
  • #14vue3生成表单并跳转到外部地址的方式
  • #php的pecl工具#
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (2.2w字)前端单元测试之Jest详解篇
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (四)库存超卖案例实战——优化redis分布式锁
  • (五十)第 7 章 图(有向图的十字链表存储)
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • *算法训练(leetcode)第四十天 | 647. 回文子串、516. 最长回文子序列