/** * 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的一个汉语转拼音的扩展包的时候,遇到这么一段代码,有两个地方看不懂。php
第一个 正则中用的 ~~ 符号laravel
看完后没有查阅到任何能够帮助到个人资料,因而通过实验后发现~和/的做用同样,表示这是一个正则表达式的定界符。正则表达式
第二个 最后一段正则\p{Han}\p{P}.net
查看了php 官方手册翻译
http://php.net/manual/zh/regexp.reference.unicode.phpcode
里面的解释仍是有些只知其一;不知其二的感受,没有理解其中的一段话(多是翻译不太贴切致使的)regexp
Unicode 字符集在具体文字中定义。使用文字名能够匹配这些字符集中的一个字符。例如:unicode
经实验,理解为能够匹配某种语言的一个字符。Han就表示中文string