做项目遇到个问题,需要把所有的不符合命名规则的文件跳出来,例如包含空格的,包含中文的,包含大写字母的。
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'),
],
在线正则匹配:
http://tool.oschina.net/regex/#