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>

php c2a0,关于php:非破坏utf-8 0xc2a0空间和preg_replace奇怪的行为相关推荐

  1. 利用冲印模式进行“非破坏”赛博朋克调色

    听说最近比较流行赛博朋克,今天和大家分享一下,最近极具潮流的赛博朋克风.赛博由紫.蓝.青.洋红组成,紫和洋红是邻近色,一般代表诱惑.神秘.诡异,再加上代表科技感的蓝色,由此形成年轻.科技.Cool.另 ...

  2. java 全排列非递归算法_全排列的非递归算法 - osc_ivkc73ze的个人空间 - OSCHINA - 中文开源技术交流社区...

    1.全排列的定义和公式: 从n个数中选取m(m<=n)个数按照一定的顺序进行排成一个列,叫作从n个元素中取m个元素的一个排列.由排列的定义,显然不同的顺序是一个不同的排列.从n个元素中取m个元素 ...

  3. 删除一个非空的无用表空间

    删除表空间: drop tablespace  表空间名; 如果表空间是非空会提示 执行:drop tablespace 表空间名   including contents; 转载于:https:// ...

  4. vue 非es6 写法怎么按须加载_Vue源码必学指南:flow(语法检查)以及rollup(模板打包)...

    点击上方蓝色字关注我们~ 一.前言 虽然 Vue3 已经公开了代码,但是Vue3.0还处于开发阶段,直接上手使用Typescript是不合适的 , 对于前端的老手是不错的选择, 但是如果没有研究源码经 ...

  5. 游戏开挂的罪与非罪——从“王者荣耀外挂案”说起

    游戏开挂的罪与非罪--从"王者荣耀外挂案"说起 陈成伟   2018-07-28 收藏 近日,媒体公开报道了首例"王者荣耀"外挂案,针对网络游戏中的作弊行为,法 ...

  6. Photoshop教程:以非破坏性方式使照片的某些部分变亮和变暗

    Photoshop是很棒的图片编辑调整工具,我们拍摄的照片有时感觉亮暗对比不是很明显,可以使用Photoshop来调整一下,今天带来的教程是如何使用曲线调整图层以非破坏性方式使照片的某些部分变亮和变暗 ...

  7. 【网络编程】同步IO、异步IO、阻塞IO、非阻塞IO

    IO分两阶段: 1.数据准备阶段:在该阶段,根据是否等待数据准备,将IO分成阻塞和非阻塞: 2.内核空间复制回用户进程缓冲区阶段:在该阶段,只要程序需要等待复制完成,才能往下运行(尽管这个时间很短), ...

  8. 非侵入脑机接口新突破!用意念控制光标,连续追踪效果提升5倍

    来源:智东西 看点:CMU研究人员在使用非侵入式脑机接口开发了第一个成功用意念控制的机械臂,展现了连续追踪和跟踪计算机光标的能力. 智东西6月23日消息,卡内基梅隆大学与明尼苏达大学的研究人员在非侵入 ...

  9. fegin需要实现类_【第24条】静态成员类优于非静态成员类

    第24条 静态成员类优于非静态成员类 嵌套类(nested class)是指定义在另一个类的内部的类.嵌套类存在的目的应该只是为它的外围类(enclosing class)提供服务.如果嵌套类将来可能 ...

最新文章

  1. 程序员带你解析Python3
  2. 警告:攻击者利用 SonarQube 漏洞盗取国内多个机构的大量源码!
  3. Ruby的资源站点和开发工具列表
  4. 读《编程之道》-对于程序员的抽象描述
  5. 03 | 事务隔离:为什么你改了我还看不见
  6. 【UEditor】百度编辑器插入video视频
  7. 使用完成端口监控文件目录的例子
  8. 计算机科学学院陈瑜,浙江大学城市学院计算机与计算科学学院 计算机科学与技术 陈则伦...
  9. 微服务内部方法调用方式
  10. Ubuntu redmine 安装
  11. linux线上CPU100%排查
  12. Python(8)_初学Python
  13. python—Django面试题汇总
  14. 2020 全国省份数据整理
  15. 图灵机器人—免费API
  16. 什么是云计算,云计算的三种类型
  17. CIO如何在企业并购中生存
  18. 【虚拟现实】学习笔记
  19. python3*1**3 表达式输出结果为_22 % 3 表达式输出结果为________
  20. 信息传递(带权并查集求最小环

热门文章

  1. C++ strtod可能不安全的问题
  2. 电动车号牌输入组件plate-number-input使用
  3. 中国社科院与美国杜兰大学金融管理硕士项目——你永远可以,成为想要的自己
  4. 漫画:从诗词大会飞花令到ElasticSearch原理解析
  5. 蓝牙耳机什么牌子的好又实惠?便宜又好用的蓝牙耳机推荐
  6. 恋人之间的分手费,合法吗
  7. linux mdadm 源码,mdadm详解
  8. 圆周率科技亮相2021世界VR产业博览会
  9. 智能科技、创新未来 2017 iWorld数字世界博览会发布会在蓉举行
  10. 【面试 反思】Retrofit源码与设计 7 连问