Bellicus
@Bellicus
И швец, и жнец, и на дуде игрец.

Регулярное выражение выбирающее папки которые символы НЕ содержат?

Есть код (кусок):
$dir = scandir(".");
foreach ($dir as $key) {
	if(is_dir($key))
		if($key != "." && $key != "..")
			if(preg_match(pattern, $key))
			        print_r($key);
}

И список папок (теоретический):
__assets
__vendors
agsup
kiddy
lombard
poker

Суть, надо выбрать папки кроме тех, что начинаются на "__"
выражение типа /?!__/, и прочие нагугленные не срабатывают с прочерками.
Помогите подобрать работающую регулярку.

PS: /^[a-z]/i - отрабатывает, но пока. Что будет в будущем еще не известно, и лучше от него воздержаться
  • Вопрос задан
  • 832 просмотра
Решения вопроса 1
Cyapa
@Cyapa
Нужно шашечки или ехать? Если ехать, то почему бы не использовать !preg_math (или если условие только такое, что нужно убрать названия с ведущими подчеркиваниями, то регулярные выражения вообще не нужны).

Если же шашечки, то можно попробовать так: /^[^_]/
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
qork
@qork
{ background: #F00B42 }
@Kraky
Не нужен тут preg_match, если у вас только __ не должны включаться.
// Берем все директории и файлы кроме . и ..
$directories = array_diff(scandir(__DIR__), ['.', '..']);

// Фильтруем и получаем только те директории, которые НЕ начинаются с __
array_filter($directories, function ($directory) {
    return is_dir($directory) && strpos($directory, '__') !== 0;
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы