Php C2a0,关于php:非破坏utf-8 0xc2a0空间和preg_replace奇怪的行为
0 ·
0 文章标签: #php c2a0
博客讨论了在PHP中如何使用preg_replace函数正确替换UTF-8不间断空格(U+00A0)。作者指出,使用`?x{00A0} p>在我的字符串中,我有utf-8不间断空格(0xc2a0),我想用别的东西替换它./p>
p>当我使用/ p>时
pre> code> $ str = preg_replace('? xc2 xa0~','X',$ str);
/代码>/ PRE>
它运作正常./p>
但是当我使用/ p>时
pre> code> $ str = preg_replace('? x {C2A0} ~siu','W',$ str);
/代码>/ PRE>
p>未找到(并替换)不间断的空间./ p>
P>为什么呢? 第二个regexp有什么问题?/ p>
p>格式代码> x {C2A0} / code>是正确的,我还使用了代码> u / code> flag./p>
可能是因为代码> $ str / code>不是unicode字符串。
实际上,关于PHP中的转义序列的文档是错误的。当您使用代码> xc2 xa0 / code>语法时,它会搜索UTF-8字符。但是使用代码> x {c2a0} / code>语法,它会尝试将Unicode序列转换为UTF-8编码的字符./p>
p>非中断空格是代码> U + 00A0 / code>(Unicode),但在UTF-8中编码为代码> C2A0 / code>。因此,如果您尝试使用模式代码>? x {00a0} ~siu / code>,它将按预期工作./p>
是的, x工作,谢谢。
嗨纽博。 你的回答对我有用,但我仍然不明白为什么。 是因为我的不是UTF-8吗? 我的数据来自具有utf8_general_ci字符集的数据库表,因此它应该是UTF-8(我的character_set_client和character_set_connection也是UTF-8)。 你有链接了解更多信息吗? 谢谢。
a href ="http://rrn.dk/the-difference-between-utf-8-and-unicode">本文/ a>非常了解这个主题。 还有一个href ="http://stackoverflow.com/questions/3951722/whats-the-difference-between-unicode-and-utf8">这个SO问题/ a>前一篇文章已被复制/粘贴。
我已经开始研究以前的答案,以便人们可以复制/粘贴以下代码来选择他们喜欢的方法:/ p>
pre> code> $ some_text_with_non_breaking_spaces ="sometextwith开头有2个非破坏空格";
echo'Qty non-breaking space:'。 substr_count($ some_text_with_non_breaking_spaces," xc2 xa0")。 'BR>';
echo $ some_text_with_non_breaking_spaces。 'BR>';
#方法1:正则表达式
$ clean_text = preg_replace('? x {00a0} ~siu','',$ some_text_with_non_breaking_spaces);
#方法2:转换为bin - > replace - >转换为hex
$ clean_text = hex2bin(str_replace('c2a0','20',bin2hex($ some_text_with_non_breaking_spaces)));
#方法3:我最喜欢的
$ clean_text = str_replace(" xc2 xa0","",$ some_text_with_non_breaking_spaces);
echo'Qty non-breaking space:'。 substr_count($ clean_text," xc2 xa0")。 'BR>';
echo $ clean_text。 'BR>';
/代码> / PRE>
代码> hex2bin()/ code>变量是危险的,它将错误地替换错误对齐的出现。 例如,考虑十六进制序列代码> 0c2a0a / code>。
p>在我看来,这两个代码做了不同的事情:第一个代码> xc2 xa0 / code>将替换两个字符,代码> xc2 / code>和代码> xa0 / code> with nothing./p>
p>在UTF-8编码中,这恰好是代码> U + 00A0 / code>的代码点./ p>
p>代码> x {00A0} / code>有效吗?这应该是代码> xc2 xa0 / code> ./ p>的表示
x工作,谢谢。
p>我没有使用这个变体代码>? x {c2a0} ~siu / code> ./ p>
p> Varian代码> x} / code>有效。我没有尝试过第二个选项,结果如下:/ p>
p>我试图将其转换为十六进制并将无中断空格代码> 0xC2 0xA0(c2a0)/ code>替换为空格代码> 0x20(20)/ code> ./ p>
P>代码:/ P>
pre> code> $ hex = bin2hex($ item);
$ _item = str_replace('c2a0','20',$ hex);
$ item = hex2bin($ _ item);
/代码> / PRE>
谢谢,工作......
p> / x {00A0} /,/ xC2 xA0 /和$ clean_hex2bin-str_replace-bin2hex工作并且不起作用。如果我把它打印到屏幕上,这一切都很好,但是如果我试图将它保存到文件中,那么该文件将是空白的!/ p>
p>我最终使用了iconv('UTF-8','ISO-8859-1 // IGNORE',$ str); / p>
确定要放弃本次机会? 福利倒计时 : :
立减 ¥
-
0 点赞 -
踩 -
0 收藏 觉得还不错? 一键收藏
-
知道了
0 评论 -
举报
举报
PHP正则替换函数preg_replace和preg_replace_callback使用总结 10-25 在PHP中,有两个常用的函数用于执行正则替换操作:preg_replace() 和 preg_replace_callback()。 首先,我们来看一下preg_replace()函数。这个函数的基本形式是:mixed preg_replace ( mixed $pattern , mixed $... 参与评论 您还未登录,请先 登录 后发表或查看评论 详解PHP正则表达式替换实现(PHP preg_replace,PHP preg_replace) 01-19 preg_replace:执行正则表达式的搜索和替换 mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit]) preg_replace:允许你替换字符串中匹配到你定义的正则表达式。 一个简单的... c2a0 这样的空格 NO-BREAK SPACE kunpengku 01-22
9350 ascii中的空格,编码是 32, 040 或者 x20。在UTF-8编码里面存在一个特殊的字符,其编码是“0xC2 0xA0”,转换成字符的时候表现为一个半角空格,跟一般的半角空格(ASCII 0x20)不同的是它的宽度不会被压缩,所以排版中常能用到它。但是GB2312、Unicode之类并没有这样的字符可以通过od命名查看[[email protected] fupeng]# od -t x1 UTF-8转GBK的悲剧:特殊字符C2A0 热门推荐 ccm1125的专栏 03-11
1万+ 这个问题出现得比较早:在传给印象派的作品描述XML(GBK编码)中一些文字信息经常包含乱码,而且会一乱到底,甚至导致不同页的错乱。刚开始一直都没有什么头绪,不过后来终于发现了部分头绪:GBK的字符集过小,对一些特殊字符的转码会出现乱码—-一些生僻字也就算了,但是其中却包括这个字符:C2A0—-一个在网页上经常使用排版用全角空格。就是这么个字符,用户从网页端拷贝了一段文字,复制到界面上显示正常,保存 UTF-8编码的特殊字符,在GBK下显示?的问题 qq_37910618的博客 09-24
3339 在UTF-8编码里面存在一个特殊的字符,其编码是“0xC2 0xA0”,转换成字符的时候表现为一个半角空格,跟一般的半角空格(ASCII 0x20)不同的是它的宽度不会被压缩,所以排版中常能用到它。但是GB2312、Unicode之类并没有这样的字符,所以转换后会显示为“?”号,只是显示为问号而不是真正的问号,所以无法被替换。 这时需要在UTF-8的字符串中替换掉该字符即可,在java中的用法如下: byte[] utfspace = new byte[] { (byte)0xc2, (byte)0xa0 UTF-8编码中的特殊空格之C2 A0 -> NO-BREAK SPACE 技术小站 05-26
4377 异常数据追踪 最近发现数据库中的一个字段值数据异常的问题,业务场景中不允许这个字符串字段中出现空格,但是发现有部分数据依然有'空格',反复验证过之后发现自己写的代码的的确确会把空格trim掉,反复调试后发现代码没有问题,但是什么情况使得这些数据逃过了业务代码的校验? 准备破案 难道我肉眼看到的'空格',不是我们平常见到或者理解的'空格'? 带着这个疑问,我搜索了一下相关的问题,发现果不其然,很多人都遇到了C2 A0这个不可见字符,那么这个字符到底是什么呢? 打开UTF-8的编码表,https:// UTF-8字符C2A0引起的问题 weixin_30235225的博客 11-21
3312 今天遇到一个问题: 网页上的一段文字中有几个空格,把这段文字当作文件名称保存为一个windows系统下的文件后,文件名中本来是空格的地方变成了问号,另外一个C#程序打开这个文件,也提示找不到文件。 初步估计是这几个空格的编码有问题。用16进制的编辑器打开这段文字: 打开后发现,这几个空格的编码是C2A020C2A0,那么平常用的空格是什么编码呢? 找到一个正常的带空格的字符串“20... php中preg_replace_callback函数简单用法示例 12-19 `preg_replace_callback`与`preg_replace`的主要区别在于,`preg_replace`需要提供一个预定义的替换字符串,而`preg_replace_callback`则允许更动态的处理,可以根据匹配的内容生成替换字符串,这在处理复杂替换逻辑... php preg_match_all结合str_replace替换内容中所有img 10-30 在PHP编程中,`preg_match_all` 和 `str_replace` 是两个非常重要的字符串处理函数,它们经常被用来处理HTML或XML文档中的特定内容。在这个场景中,开发者需要从采集的数据中提取并替换`<img>`标签,以符合站点的... C2 A0 不可见字符到底是什么?半角非中断空格 qfzhangwei的专栏 04-24
6268 首先看下 UTF-8 编码 C2 A0 代表的含义:https://www.utf8-chartable.de/unicode-utf8-table.pl?utf8=dec 翻译过来就是:半角非中断空格 这是什么鬼? 长这样,你看到了吗?我没看到 PHP 去掉特殊不可见字符 “\u200e“、以及 “%C2%A0” 最新发布 u011415782的专栏 11-28
976 打印 发现这个"空字符"占了三个长度 (显示一个小点)最近在排查网站业务时,发现有数据匹配失败的情况。】复制出来发现 末尾有个不可见的字符。使用删除键或左右移动时才会发现。肉眼上完全看不出问题所在。 php删除头尾空,php去除头尾空格的2种方法,php头尾空格2种_PHP教程 weixin_34515820的博客 03-21
187 php去除头尾空格的2种方法,php头尾空格2种看似很简单的问题,其实还是有点坑的,首先这里 空格转义,不是字符串,直接用trim()是去不掉。1,用preg_replace替换复制代码 代码如下:$test = " dfadad 论责民与三英的关系775fd ";$test = preg_replace('/^( |\s)*|( |\s)*$/', '', $test);var_dump($... Oracle替换特殊字符0xC2A0 Howe的博客 11-02
956 方案一: SELECT replace(字段, HEXTORAW('C2A0')) FROM dual; 不生效 方案二: SELECT replace(字段, utl_raw.cast_to_varchar2('C2A0')) FROM dual; 还是生效 方案三: SELECT replace(字段, chr(49824)) FROM dual; 正解。49824是C2A0(十六进制... 空格有两个ascii值36和160 scorpio_9157的专栏 04-28
1192 空格的ascii码值是多少?今天之前,我的回答肯定是0x20(十进制就是36)。但今天碰到的一个问题让我对空格有了新的认识。空格的ascii码还可能是160。 碰到的问题是这样的:在某一文章页面中,发现存在一个包含空格的标签(手机 随拍),点击这个标签却搜索不到这篇文章 。这篇文章是从手机上发布的,随即试了从PC上发布文章发现是正常的。检查PC上和手机上发布文章的标签数据,... 占两个字节的“空白符” sun_cainiao的博客 10-18
7133 在修改开源论坛phpBB时,将一段文本字符串输出到html页面上时发现不能按单词换行,而是会打断单词。 在浏览器上右键编辑后发现"空格"变成了 于是就想在输出前用str_replace将 替换成真的空格-- str_replace(' ',' ',&text); 当然结果失败了。 最后,先用的urlencode()将&text输出,"空格"变成了%C php正则去掉空格,去掉中文空格的PHP正则代码 weixin_35278121的博客 03-10
493 http://www.cnblogs.com/kuyuecs/archive/2011/04/15/1689000.html中文空格这里面有好几种:没有简单的解决问题的方式,比如半角全角空格,比如段落符都会显示为空白的,然后让人们误解它是空格,所以去掉空格之前一定要先确认自己的是不是空格,我下面分析一下这两种的解决办法。 (1)/[\s| ]+/这个就可以,注意|后面的跟的是全角空格 (2... 去掉中文空格的PHP正则代码 weixin_30314813的博客 03-18
168 中文空格这里面有好几种:没有简单的解决问题的方式,比如半角全角空格,比如段落符都会显示为空白的,然后让人们误解它是空格,所以去掉空格之前一定要先确认自己的是不是空格,我下面分析一下这两种的解决办法。 (1)/[\s| ]+/这个就可以,注意|后面的跟的是全角空格 (2)mb中的正则替换也可以试试 另外注意使用Unicode的时候,加上正则表达式描述符u 但由于汉语中显示为空格模样的有很多个... php 空格无法替换,utf-8空格惹的祸 weixin_30512785的博客 11-28
196 一次坑爹的小bug。读取一段文字(编码utf-8),想替换掉空格,str_replace(" "..)、preg_replace("/\s/"..)都不起作用。 <?php // 替换<p>后4个空格 $str = file_get_contents("http://m.ts.cn/new/99cms_ts/api.php?s=/News/getN... PHP preg_replace与preg_replace_callback深度解析及其应用场景 PHP正则替换函数`preg_replace`和`preg_replace_callback`在模板引擎开发中起着关键作用,尤其是在处理字符串替换和条件判断时。`preg_replace`通常用于全局搜索并替换符合正则表达式的字符串,而`preg_replace_... 博客等级
TA的精选
- 新 iis服务器网站加速,iis6配置gzip给网页减肥加快网页加载速度的方法
718 阅读
- 新 浪潮服务器不显示光驱,电脑不从光驱启动怎么办?我是浪潮品牌的机子。
1811 阅读
- 热 双线macd指标参数最佳设置_15分钟macd参数设置方法 15分钟k线macd指标如何判断买卖点...
15770 阅读
- 热 typec转usb不识别u盘_U盘插入电脑没反应?只需一招,教你轻松解决USB无法识别的问题!...
13441 阅读
- 热 python 除法符号_python的除法运算符是什么
11897 阅读
查看更多
大家在看
- Python中的ARS(访问者模式)设计模式:全面解析与实战应用
243 - C语言实现计算x的n次方(附带源码)
1534 - 本文基于分形纤维丛计算复杂性理论,通过严格证明拓扑自对偶性、构建TQTM计算模型、设计分形快速同调算法与完成大规模数值模拟,完整证明了P = NP。进一步证明了分形纤维丛数论框架的强大适用性。
231 - 【BuildFlow & 筑流】Rust单位系统宏:define_units! 设计全解
70 - Python正则表达式深度解析:match()与search()的全面对比
1004
TA的历史创作历程
2021年 150篇 2020年 206篇 上一篇: php建立分页查询,利用PHP项目实现一个查询分页功能 下一篇: php获取返回的头部状态码,phpHeaderHTTP状态码和常用返回头集合大全
目录
展开全部 
收起 
目录
展开全部 
收起 
上一篇: php建立分页查询,利用PHP项目实现一个查询分页功能 下一篇: php获取返回的头部状态码,phpHeaderHTTP状态码和常用返回头集合大全 目录
评论
被折叠的 条评论 为什么被折叠?
添加红包 祝福语 请填写红包祝福语或标题
红包数量 个红包个数最小为10个
红包总金额 元红包金额最低5元
余额支付 当前余额3.43元 前往充值 > 需支付:10.00元 取消 确定
下一步
知道了 实付元 使用余额支付
点击重新获取 

扫码支付 钱包余额 0
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
余额充值 Từ khóa » C2 A0 Php
-
How To Remove All Occurrences Of C2a0 In A String With PHP?
-
HTML URL Encoding Reference - W3Schools
-
Rawurlencode - Manual - PHP
-
How To Remove All Occurrences Of C2a0 In A String With PHP - PHP ...
-
Search Results - =蜜穴【HX9.COM】✔️️php C2a0 Php 图书管理 ...
-
You Must Pass A State Name! - USDA NASS
-
Non-breaking Space - Wikipedia
-
ASCII Table - TechOnTheNet
-
0xa0 Php,PHP替換UTF-8的空格(0xC2 0xA0)-爱代码爱编程
-
Php - 如何用PHP删除字符串中出现的所有c2a0? | 码农俱乐部 ...
-
%25257Bsearch_term_string%25257D/%2525C2%2525AB ...
-
E-commerce Statistics For Individuals - European Commission
-
Thread: Url Encode %A0 Vs. %20 - Dynamic Drive