我在自定义的脚本中找到了此正则表达式。有人可以告诉我它在做什么吗?
function test( $text) {
$regex = '/( [\x00-\x7F] | [\xC0-\xDF][\x80-\xBF] | [\xE0-\xEF][\x80-\xBF]{2} | [\xF0-\xF7][\x80-\xBF]{3} ) | ./x';
return preg_replace($regex, '$1', $text);
}
最佳答案
在捕获组内部,有四个选项:
[\x00-\x7F]
[\xC0-\xDF][\x80-\xBF]
[\xE0-\xEF][\x80-\xBF]{2}
[\xF0-\xF7][\x80-\xBF]{3}
如果这些模式在给定位置都不匹配,那么任何字符都将被捕获组之外的
.
匹配。preg_replace
调用将遍历$text
来查找所有不重叠的匹配项,并用捕获的内容替换每个匹配项。这里有两种可能性,要么整个匹配项都在捕获组内,所以替换项不会更改
$text
,要么末尾的.
与单个字符匹配,然后将该字符从$text
中删除。以下是一些基本示例:
\xF8-\xFF
范围内的字符,它将始终被删除\xC0-\xDF
中的字符,否则\x80-\xBF
中的字符将被删除\xE0-\xEF
中的两个字符,否则\x80-\xBF
中的字符将被删除\xF0-\xF7
中的三个字符,否则\x80-\xBF
中的字符将被删除\x80-\xBF
中的字符将被删除关于php - 这个正则表达式在做什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7096303/