PHP 去掉特殊不可见字符 “\u200e“
-
描述
最近在排查网站业务时,发现有数据匹配失败的情况
肉眼上完全看不出问题所在
当把字符串 【'M24308/23-14F'
】复制出来发现 末尾有个不可见的字符使用删除键或左右移动时才会发现
最后测试通过var_dump
打印 发现这个"空字符"占了三个长度 (显示一个小点)
1. 通过了解,基本定位在 业务人员在 excel数据表 复制过程中,意外带来了这个 “不可见字符”
2. 我的目的,就是为了能满足 正常业务的字符串比对需要去掉 末尾的特殊字符
3. 测试发现,使用 trim()、mb_trim() 都无法去除,最终使用 preg_replace()可进行匹配替换 .
-
测试代码
通过多次测试,与借鉴网上经验,可参考如下测试代码:$string = 'M24308/23-14F';var_dump($string);$lastChar = mb_substr($string, -1); // 获取最后一个字符var_dump($lastChar);$asciiValue = mb_ord($lastChar); // 获取最后一个字符的ASCII值var_dump( "最后一个字符的--ASCII值 是:".$asciiValue);$pattern = "/[\x{200b}-\x{200f}]/u";$str = preg_replace($pattern, "", $string);var_dump($str);
-
运行结果
-
处理代码如下
//处理型号(可能有 特殊不可见字符)$xingHao = $_notice['型号']??'';$pattern = "/[\x{200b}-\x{200f}]/u";$xingHao = preg_replace($pattern, "", $xingHao);
-
参考
php 去掉不可见字符串,php删除不可见的Unicode字符
相关文章:

PHP 去掉特殊不可见字符 “\u200e“
描述 最近在排查网站业务时,发现有数据匹配失败的情况 肉眼上完全看不出问题所在 当把字符串 【M24308/23-14F】复制出来发现 末尾有个不可见的字符 使用删除键或左右移动时才会发现 最后测试通过 var_dump 打印 发现这个"空字符"占了三个长度 …...

深度学习—BP算法梯度下降及优化方法Day37
梯度下降 1.公式 w i j n e w w i j o l d − α ∂ E ∂ w i j w_{ij}^{new} w_{ij}^{old} - \alpha \frac{\partial E}{\partial w_{ij}} wijnewwijold−α∂wij∂E α为学习率 当α过小时,训练时间过久增加算力成本,α过大则容易造成越过最…...
elasticsearch8.16 docker-compose 多机器集群安装
在网上找了一圈, 发现要么就是单机版的部署了多个节点, 很少有多台机器部署集群的, 有些就拿官网的例子写一写, 没有实战经验, 下面分享一个教程, 实实在在的多台机器, 每台机器部署2个节点的例子 先上.env , docker-compose.yml文件, 这个文件是核心, 里面掺杂太多坑, 已经帮你…...

Flink--API 之 Source 使用解析
目录 一、Flink Data Sources 分类概览 (一)预定义 Source (二)自定义 Source 二、代码实战演示 (一)预定义 Source 示例 基于本地集合 基于本地文件 基于网络套接字(socketTextStream&…...
uniapp在小程序连接webScoket实现余额支付
webScoket文档:uni.connectSocket(OBJECT) | uni-app官网 /plugins/event.js const Dep function() {this.Evens Object.create(null); } class Event {constructor({dep new Dep()} {}) {if (dep.constructor Object && Object.keys(dep).length 0…...

Spring Boot【三】
自动注入 xml中可以在bean元素中通过autowire属性来设置自动注入的方式: <bean id"" class"" autowire"byType|byName|constructor|default" /> byName:按照名称进行注入 byType:按类型进行注入 constr…...
R 因子
R 因子 引言 在金融领域,风险管理和投资策略的优化一直是核心议题。传统的风险度量工具,如波动率、Beta系数等,虽然在一定程度上能够帮助投资者理解市场的波动和资产的相对风险,但它们往往无法全面捕捉到市场动态的复杂性。因此…...

【博主推荐】C# Winform 拼图小游戏源码详解(附源码)
文章目录 前言摘要1.设计来源拼图小游戏讲解1.1 拼图主界面设计1.2 一般难度拼图效果1.3 普通难度拼图效果1.4 困难难度拼图效果1.5 地域难度拼图效果1.6 内置五种拼图效果 2.效果和源码2.1 动态效果2.2 源代码 源码下载结束语 前言 在数字浪潮汹涌澎湃的时代,程序开…...

深入解析 MySQL 启动方式:`systemctl` 与 `mysqld` 的对比与应用
目录 前言1. 使用 systemctl 启动 MySQL1.1 什么是 systemctl1.2 systemctl 启动 MySQL 的方法1.3 应用场景1.4 优缺点优点缺点 2. 使用 mysqld 命令直接启动 MySQL2.1 什么是 mysqld2.2 mysqld 启动 MySQL 的方法2.3 应用场景2.4 优缺点优点缺点 3. 对比分析结语 前言 MySQL …...

【python】windows pip 安装 module 提示 Microsoft Visual C++ 14.0 is required 处理方法
参考链接:https://blog.csdn.net/qzzzxiaosheng/article/details/12511900 1.问题引入 在使用pip 安装一些module经常会出现报错: Microsoft Visual C 14.0 is required. Get it with “Microsoft Visual C Build Tools很明显这是缺少C的编译的相关依…...

python爬虫案例——猫眼电影数据抓取之字体解密,多套字体文件解密方法(20)
文章目录 1、任务目标2、网站分析3、代码编写1、任务目标 目标网站:猫眼电影(https://www.maoyan.com/films?showType=2) 要求:抓取该网站下,所有即将上映电影的预约人数,保证能够获取到实时更新的内容;如下: 2、网站分析 进入目标网站,打开开发者模式,经过分析,我…...
go sync.WaitGroup
1、数据结构 type WaitGroup struct {noCopy noCopystate atomic.Uint64 // high 32 bits are counter, low 32 bits are waiter count.sema uint32 } 计数器:原子变量,高32位用于为协程计数,低32位为等待计数(被Wait阻塞等待&a…...
Libevent库-http通信不同请求方式的处理
做项目的时候用到了http通信,同事用libevent库写的,特此记录后端从前端拿到消息后的处理方式 void CHTTPTest::request(const std::any & data) {// data 是从前端拿到的数据void *obj std::any_cast<void *>(data); // std::any是C17新标准…...

关于node全栈项目打包发布linux项目问题总集
1.用pm2部署nest 说明:如果一开始将nest直接打包放到linux服务器上用pm2执行则会报错,这是因为tsconfig.build.tsbuildinfo文件的路径以及相关依赖问题。 报错会为:什么东西找不到.... 所以建议以下为步骤一步一步配置 将整个nest添加压缩包直…...
常见的上、下采样方法
常见的上采样方法 反卷积(Deconvolution)或转置卷积(Transpose Convolution):通过学习可逆卷积核来进行上采样,增加特征图的尺寸。插值(Interpolation)ÿ…...
如何解决 java.rmi.NotBoundException: RMI 中没有绑定的对象问题?亲测有效的解决方法!
java.rmi.NotBoundException 是 Java RMI(Remote Method Invocation)中的一个常见异常,它通常出现在远程方法调用过程中,表示在 RMI 注册表中找不到指定的绑定对象。换句话说,当客户端尝试查找一个远程对象(…...

设计模式:14、抽象工厂模式(配套)
目录 0、定义 1、抽象工厂模式的四种角色 2、抽象工厂的UML类图 3、示例代码 0、定义 提供一个创建一系列或相互依赖对象的接口,而无须指定它们具体的类。 1、抽象工厂模式的四种角色 抽象产品(Product):一个抽象类或接口&a…...

Linux环境基础开发工具使用
目录 1. Linux软件包管理器yum 1.1 什么是软件包 1.2 Linux软件生态 1.3 关于rzsz 1.4 注意事项 1.5 查看软件包 2. Linux编辑器-vim使用 2.1 vim的基本概念 2.2 vim的基本操作 2.3 简单vim配置 3. 编译器gcc/g 3.1 背景知识 3.2 gcc编译选项 3.2.1 预处理…...
AI生成的一个.netcore 经典后端架构
下面是一个完整的 .NET Core 后端项目示例,使用 Dapper 作为轻量级 ORM 访问 Oracle 数据库,并实现高性能架构。我们将实现学生表、课程表、成绩表和班级表的基本增删改查功能,以及查询某个班级学生成绩的功能,并使用自定义缓存来…...
深度学习-48-AI应用实战之基于face_recognition的人脸识别
文章目录 1 人脸识别1.1 识别原理1.2 应用场景2 python实现人脸识别2.1 windows安装face_recognition2.2 安装问题及解决3 使用示例3.1 人脸区域检测3.2 对齐与编码3.3 人脸匹配3.4 信息录入4 附录4.1 函数cv2.rectangle4.2 参考附录1 人脸识别 通过图片或者摄像头的方式,将识…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...

练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...