文档章节

php正则表达式 unicode编码属性

起什么name呢
 起什么name呢
发布于 2017/04/17 00:14
字数 295
阅读 35
收藏 0
/**
 * Preprocess.
 *
 * @param string $string
 *
 * @return string
 */
protected function prepare($string)
{
    $string = preg_replace_callback('~[a-z0-9_-]+~i', function ($matches) {
        return "\t".$matches[0];
    }, $string);

    return preg_replace("~[^\p{Han}\p{P}\p{Z}\p{M}\p{N}\p{L}\t]~u", '', $string);
}

今天在看laravel的一个汉语转拼音的扩展包的时候,遇到这么一段代码,有两个地方看不懂。

第一个 正则中用的 ~~ 符号

看完后没有查阅到任何可以帮助到我的资料,于是经过实验后发现~和/的作用一样,表示这是一个正则表达式的定界符。

第二个 最后一段正则\p{Han}\p{P}

查看了php 官方手册

http://php.net/manual/zh/regexp.reference.unicode.php

里面的解释还是有些一知半解的感觉,没有理解其中的一段话(可能是翻译不太贴切导致的)

Unicode 字符集在具体文字中定义。使用文字名可以匹配这些字符集中的一个字符。例如:

  • \p{Greek}
  • \P{Han}

经实验,理解为可以匹配某种语言的一个字符。Han就表示中文

© 著作权归作者所有

共有 人打赏支持
上一篇: 失眠记
下一篇: 阿里云 lnmp安装
起什么name呢
粉丝 1
博文 39
码字总数 12406
作品 0
朝阳
高级程序员
私信 提问
加载中

评论(2)

起什么name呢
起什么name呢

引用来自“安正超”的评论

哈哈,作者来解释一下好了:

汉字:\p{Han}
标点符号:\p{P}
分隔符:\p{Z}
标志符号:\p{M}
数字:\p{N}
字母:\p{L}

> https://www.regular-expressions.info/unicode.html😆
👍
安正超
安正超
哈哈,作者来解释一下好了:

汉字:\p{Han}
标点符号:\p{P}
分隔符:\p{Z}
标志符号:\p{M}
数字:\p{N}
字母:\p{L}

> https://www.regular-expressions.info/unicode.html😆
正则表达式和其在OC中的的使用

正则表达式和其在OC中的的使用 最近对正则表达式(regex)很感兴趣, 于是了解了一下, 正则表达式是所有语言都通用的一套查找字符串的方法, 在网上找了很多入门教程, 也看了很多的教程, 也能写出...

hell03W
2016/03/06
259
0
JS基础-String对象手册

String 对象属性 属性 描述 constructor 对创建该对象的函数的引用 length 字符串的长度 prototype 允许您向对象添加属性和方法 String对象方法 方法 描述 anchor() 创建 HTML 锚。 big() 用...

ZHAO_JH
07/05
0
0
初步了解 PHP V6 中的新特性

增强对 Unicode 的支持 PHP V6 中的主要特性是增强对 Unicode 的支持。目前,PHP 实际上是一个二进制处理器。PHP V5 没有提供原生的 Unicode 支持;它假定所有字符的长度都为 1 字节,这在处...

红薯
2009/06/07
793
0
ES9已经来了 Are you ready?

ES9 前言 改篇文章主要是介绍了ES9新加的一些新特性。 1. 异步迭代 在的某些时刻,你可能尝试在同步循环中调用异步函数。例如: 这段代码不会正常运行,下面这段同样也不会: 这段代码中,循...

霖呆呆
08/07
0
0
Linux/Unix工具与正则表达式的POSIX规范

对正则表达式有基本了解的读者,一定不会陌生『d』、『[a-z]+』之类的表达式,前者匹配一个数字字符,后者匹配一个以上的小写英文字母。但是如果你用过vi、grep、awk、sed之类Linux/Unix下的...

skypeGNU1
2016/03/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

初探Spring Cloud(一)

1. 什么是Spring Cloud? Spring提供了一系列工具,可以帮助开发人员迅速搭建分布式系统中的公共组件(比如:配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,...

__HuWei
12分钟前
0
0
Mac配置ssh免密钥登录

Mac终端每次使用ssh -p 22 user@ip登录很是麻烦,下面介绍配置ssh免密钥登录: cd ~/.ssh下创建conf文件,写入以下配置: Host test HostName ip Port 22 IdentityFile /Users/t/key/test.p...

littlemesieV
27分钟前
1
0
Spark2.0操作ES

ES提供了支持包来方便的操作ES。首先添加ES的依赖maven: <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch-spark-20_2.11</artifactId> <version>6.2.0</ver......

守望者之父
29分钟前
1
0
专业术语

1、防御性编程 DruidDataSource类有一个init方法,我们在spring中配置druid时,都会指定 init-method='init'. 而且DruidDataSource也在其他地方,诸如getConnection()方法里作了防御性编程, 也就...

still5656
31分钟前
1
0
微信开发--测试账号相关

1、微信公众平台选择代码开发后,其平台上的部分功能会不可用 可在开发者工具中选择开通测试账号,进行相关的功能调试(测试账号出微信支付不可调试外,其他功能基本上都可以调试) 2、测试账号...

Code辉
37分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部