Php C2a0,关于php:非破坏utf-8 0xc2a0空间和preg_replace奇怪的行为

php c2a0,关于php:非破坏utf-8 0xc2a0空间和preg_replace奇怪的行为 最新推荐文章于 2024-11-28 14:19:29 发布 转载 最新推荐文章于 2024-11-28 14:19:29 发布 · 336 阅读 · 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>

确定要放弃本次机会? 福利倒计时 : :

立减 ¥

普通VIP年卡可用 立即使用 weixin_39639514 关注 关注
  • 0 点赞
  • 0 收藏 觉得还不错? 一键收藏
  • 知道了 0 评论
  • 分享 复制链接 分享到 QQ 分享到新浪微博 扫一扫
  • 举报 举报
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_... weixin_39639514

博客等级

码龄8年 155 原创 39 点赞 277 收藏 36 粉丝 关注 私信

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