过滤 PHP 中所有类型的空格

2024-05-31

我知道有很多类型的空间(em 空间、en 空间、薄空间、不间断空间等),但是,我提到的所有这些都有 HTML 实体(至少,PHP 的 htmlentities() 返回类似的内容)  。

但是,那些没有 HTML 实体的空间怎么办?
示例:[示例 URL 不再有效]
查看该帐户的昵称。它的前面有许多“ ”(空格),这些对我们来说是可见的(这不会发生在   中)。

我已经尝试过使用正则表达式进行过滤,使用 \x 转义,使用 str_replace() 进行过滤,以空格作为参数,但一点运气都没有!

您对如何过滤所有类型的空白有什么建议吗?


\s默认情况下,将not匹配值大于 128 的空白字符。要获得这些字符,您可以充分利用其他支持 UTF-8 的序列。


(Standard disclaimer: I'm skimming the PCRE source code to compile the lists below, I may miss a character or type something incorrectly. Please forgive me.)

\p{Zs}火柴:

  • U+0020 空间
  • U+00A0 不间断空格
  • U+1680 奥格姆空格标记
  • U+180E 蒙古文元音分隔符
  • U+2000 En 四核
  • U+2001 Em 四核
  • U+2002 空间
  • U+2003 Em 空间
  • U+2004 三人空间
  • U+2005 四人空间
  • U+2006 六人空间
  • U+2007 图形空间
  • U+2008 标点空格
  • U+2009 薄空间
  • U+200A头发空间
  • U+202F 狭窄的不间断空间
  • U+205F 中等数学空间
  • U+3000 表意空间

\h(水平空白)匹配相同\p{Zs}上面,加上

  • U+0009 水平选项卡。

类似地,为了匹配垂直空白,有几个选项。

\p{Zl}匹配 U+2028 行分隔符。

\p{Zp}匹配 U+2029 段落分隔符。

\v(垂直空白)匹配\p{Zl}, \p{Zp}以及以下内容

  • U+000A 换行
  • U+000B 垂直制表符
  • U+000C 换页
  • U+000D 回车
  • U+0085 下一行

回到开头,在 UTF-8 模式下(即使用u模式修饰符)\s将匹配任何字符\p{Z}匹配(任何符合\p{Zs}, \p{Zl} and \p{Zp}将匹配),加上

  • U+0009 水平制表符
  • U+000A 换行
  • U+000C 换页
  • U+000D 回车

长话短说(我打赌您阅读了以上所有内容,不是吗?)您可能想使用\s但请确保处于 UTF-8 模式,例如/\s/u。将其用于实际用途,要从字符串中过滤掉那些匹配的空白字符,您可以执行类似的操作

$new_string = preg_replace('/\s/u', '', $old_string);

最后,如果您真的非常关心不包含在中的垂直空白\s(LF和NEL)然后你可以使用字符类[\s\v]匹配上面列出的所有 26 个空白字符。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

过滤 PHP 中所有类型的空格 的相关文章

随机推荐

  • 如何包含外部Python代码以在其他文件中使用?

    如果一个文件中有一组方法 是否有办法将这些文件包含在另一个文件中 但调用它们时不带任何前缀 即文件前缀 所以如果我有 Math py def Calculate num 我该如何称呼它 Tool py using Math py for i
  • 不允许连续点的正则表达式

    我有一个正则表达式允许字母数字 下划线和点 但不允许连续点 2 a zA Z0 9 我现在还需要允许在字符串的第一个和最后一个字符中使用点 我怎样才能做到这一点 您可以像这样使用它和额外的前瞻 a zA Z0 9 不允许 开始时 不允许有
  • ess-rdired:我收到此错误“现在没有 ESS 进程与此缓冲区关联”

    To use ess rdired为了浏览对象 我按照 ESS 手册并将以下内容添加到我的 emacs autoload ess rdired ess rdired View R objects in a dired like buffer
  • mongo BadValue 未知运算符:$or

    该集合有一份文档 id ObjectId 54b513933aca242d9915a787 carriers carrier ObjectId 54b54d223aca242d9915a788 carryingInterval from I
  • 将目录添加到path环境变量

    我的要求是将目录之一添加到path安装我的应用程序时 Windows 中的环境变量并将其删除path使用批处理文件卸载时的环境变量 在与此相关的 stackoverflow 答案之一中 建议将目录添加到路径环境变量中 setx path C
  • 带子任务的 Airflow 并行任务

    我需要在 Apache Airflow 上运行以下图表 但我遇到了并行步骤的问题 因为它们有多个子步骤 gt task 1a gt tast 1b gt task 4a gt tast 4b Start gt task 2a gt tast
  • Android:如何在键盘上创建自定义形状键?

    我想知道如何在 Android 键盘上制作自定义形状键 创建自定义键盘相对容易 但创建新按钮需要做什么 他们还需要像普通键盘一样响应所有事件 有什么想法从哪里开始吗 您需要为自定义键盘上所需的每个键创建一个图像 然后创建支持键盘设计的 xm
  • 使用 Python 查找 Mac OS X 中的当前活动窗口

    有没有办法使用 Python 在 Mac OS X 上查找给定时间当前活动窗口的应用程序名称 这应该有效 usr bin python from AppKit import NSWorkspace activeAppName NSWorks
  • 这个格式错误的命令实际上发生了什么?

    问题在Vim 向后范围 可以交换 https stackoverflow com q 28224540 1427295原来是失踪了g在命令中 2 userid d 但是该命令仍然会运行 并将其转换为 userid firstname sur
  • Python 文档测试:测试 None

    使用 Python 2 7 我试图测试特定函数调用的结果是否为 None 我希望这些测试能够通过 请原谅这个相当愚蠢的例子 def six or none val gt gt gt six or none 6 6 gt gt gt six
  • Arduino Uno 上传失败

    我收到了一个 arduino uno 和一些代码 作为我正在从事的项目的一部分 我以前从未与他们合作过 所以这对我来说是一次全新的体验 我正在使用他们网站上的 Arduino 应用程序 当我编译代码时 它工作正常 然而 当我上传时 我收到错
  • MediaController 定位在 VideoView 上

    我有一个 VideoView 它以纵向占据 Activity 的上半部分 屏幕的下半部分显示一些图像和文本 当活动启动时 我正在视频视图中播放 rtsp 视频流 我通过以下代码将 MediaController 附加到 VideoView
  • PHPExcel图表轴选项设置最小值

    我在使用 PHPExcel 时遇到了一个问题 这不是 PHPExcel 的错 在图表中 显示的值非常大 因此由于 最小值 轴选项的默认设置为 自动 Excel 决定使用 Y 轴的最小值 156 000 通过进入 轴格式 选项并将该轴的最小值
  • 如何使用 MATLAB 的“等值面”函数创建三角球体

    如何创建一个三角球体 其中每个三角形的面面积相同 我想要这样的东西 http imageshack us a img198 5041 71183923 png http imageshack us a img198 5041 7118392
  • 如何在android中圆角RadioButton?

    我正在设计单选按钮 https developer android com guide topics ui controls radiobutton 现在它看起来像 我有问题 我想用圆圈展示我将如何执行此操作 我希望它的宽度和高度看起来相同
  • 一分钟定期服务

    执行周期性任务的正确方法是什么 我的实现似乎无法正常工作 当屏幕打开并且我正在使用电话时 服务方法会及时完美运行 但是 当手机锁定时 服务会以非常大且随机的间隔运行 例如 10 30 10 32 10 45 10 46 10 49 11 0
  • 过滤任何属性包含值的对象数组

    我想知道根据字符串关键字过滤对象数组的最干净 更好的方法是什么 必须在对象的任何属性中进行搜索 当我打字时lea我想遍历所有对象及其所有属性以返回包含的对象lea 当我打字时italy我想遍历所有对象及其所有属性以返回包含的对象italy
  • 非模板类与模板类的多个定义

    为什么编译器会抱怨多个 cpp 文件中定义的非模板类 但对于其定义在各个 cpp 文件中重复的模板类 通过包含该类的 inl 文件 却没问题 即使类是否在多个 cpp 文件中显式实例化 非模板情况是因为在这种情况下您的程序违反了一个定义规则
  • 检测 mobx observable 何时发生变化

    是否有可能检测到可观察的变化何时发生 例如 假设你有这个 observable myObject id 1 name apples id 2 name banana 随后 随着一些用户输入 这些值会发生变化 我怎样才能轻松检测到这一点 我想
  • 过滤 PHP 中所有类型的空格

    我知道有很多类型的空间 em 空间 en 空间 薄空间 不间断空间等 但是 我提到的所有这些都有 HTML 实体 至少 PHP 的 htmlentities 返回类似的内容 但是 那些没有 HTML 实体的空间怎么办 示例 示例 URL 不