天天看点

php正则匹配中文、汉字

做项目遇到个问题,需要把所有的不符合命名规则的文件跳出来,例如包含空格的,包含中文的,包含大写字母的。

Laravel 5.1里面可以直接运用遍历,具体方法如下:

public function allFiles() {
    $files = Storage::allFiles('levelData');
    foreach ($files as $key => $value) {
        $a1 = explode('.', $value);
        if (preg_match('/[A-Z]/', $a1[1])) {
            $daxie[] = $value;
        }
        if (preg_match('/\s+/', $value)) {
            $space[] = $value;
        }
        #匹配中文
        if (preg_match('/[\x{4e00}-\x{9fa5}]+/u', $value)) {
            $hanzi[] = $value;
        }
    }
    echo "<pre>";
    echo '<h1>有大写字母的:</h1>';
    print_r($daxie);
    echo '<h1>有空格的:</h1>';
    print_r($space);
    echo '<h1>有汉字的:</h1>';
    print_r($hanzi);
    echo "</pre>";
}      

运行的时候报错了,说是目录超出了root范围,查了下资料,需要修改:

我直接改到了web服务器根目录。问题解决:

D:\phpStudy\WWW\xx\config\filesystems.php      
'disks' => [

        'local' => [
            'driver' => 'local',
            'root' => 'D:/phpStudy/WWW',
            // 'root' => storage_path('app'),
        ],