当前位置: 首页 > 面试题库 >

不间断的utf-8 0xc2a0空间和preg_replace奇怪的行为

姬和歌
2023-03-14
问题内容

在我的字符串中,我有utf-8不间断空格(0xc2a0),我想用其他内容替换它。

当我使用

$str=preg_replace('~\xc2\xa0~', 'X', $str);

它工作正常。

但是当我使用

$str=preg_replace('~\x{C2A0}~siu', 'W', $str);

找不到(并替换)不间断的空间。

为什么?第二个正则表达式有什么问题?

格式\x{C2A0}正确,我也使用过u标志。


问题答案:

实际上,有关PHP中的转义序列的文档是错误的。使用\xc2\xa0语法时,它将搜索UTF-8字符。但是使用\x{c2a0}语法时,它将尝试将Unicode序列转换为UTF-8编码的字符。

不间断空格是U+00A0(Unicode),但编码方式C2A0与UTF-8相同。因此,如果您尝试使用模式~\x{00a0}~siu,它将按预期工作。



 类似资料:
  • 为什么我得到一个空的输出?当我删除xml中的xmlns部分时,输出是预期的,但是intellisense不再工作了。 仓库xml 仓库xsl

  • 当标题[currSlotNo]的值为空时,该行将导致错误: } HomeVu1.VdslotService updVideoSlotData pictureInst:331 Picid[currSlotNo]:331 HomeVu1.VdslotService updVideoSlotData Picmk:331 HomeVu1.VdslotService updVideoSlotData aud

  • 我刚刚在iOS 7 target上运行了一个演示应用程序,这是我得到的: 我正在使用一个故事板,它在iOS8中看起来很好。约束是正确的。 我已经检查过,例如UITableView在iOS 7中以偏移量开始 但这种情况下的问题是整件事,包括状态栏有偏移量,不知道这是什么。我在故事板中摆弄视图控制器的布局设置,没有任何效果。 我还创建了一个全新的(单视图)项目,运行时没有任何更改,也遇到了同样的问题。

  • 为了方便起见,我想创建datetime的子类。时间三角洲。这样做的目的是定义一个类: 所以我可以快速创建这样的时间增量: 然而,上面的代码产生了n天而不是n小时的时间增量。例如,请看以下ipython会话: 我无法解释这一点。有人吗?

  • 我有怪异的工作行为,不明白为什么会这样。我有以下spring批处理配置: 因此,我有一个step:throttle-limit=5和commit-interval=“100”,我假设writer将接收100个项目的块来编写,所有块都将被逐个处理。 但我有以下流程: 如果作业在流中有4个项目,那么我会看到writer收到1个项目并调用4次,而不是单次调用4个项目。此外,所有这4个调用都是并发执行的,

  • 我有以下代码来解析一个JSON文件: 要处理以下JSON文件: 如果我执行此代码,我将收到以下错误: 所以我开始一步一步地调试应用程序,看看part processing()中的哪个代码部分抛出了这个异常。令人惊讶的是,那里的所有代码都正常执行:没有抛出异常,也没有返回结果I except。 更让我惊讶的是,当我稍微改变第一种方法的代码时,它可以在不产生异常的情况下工作。 我不知道println方