php正则表达式 unicode编码属性

/**
 * 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

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

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

相关文章
相关标签/搜索