Correct regular expressions

Previously the regex was only matching on single characters. Meaning that file names such as "👍.txt" where possible while "👍" alone never was. This check apparently never worked as expected.
This commit is contained in:
Lukas Reschke 2015-07-30 11:22:14 +02:00
parent f1749ddb01
commit ad4c731c4c
2 changed files with 4 additions and 2 deletions

View File

@ -1656,11 +1656,11 @@ class View {
}
// verify database - e.g. mysql only 3-byte chars
if (preg_match('%^(?:
if (preg_match('%(?:
\xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)*$%xs', $fileName)) {
)%xs', $fileName)) {
throw new InvalidPathException($l10n->t('4-byte characters are not supported in file names'));
}

View File

@ -83,6 +83,8 @@ class PathVerification extends \Test\TestCase {
return [
// this is the monkey emoji - http://en.wikipedia.org/w/index.php?title=%F0%9F%90%B5&redirect=no
['🐵'],
['🐵.txt'],
['txt.💩'],
];
}