Не работает регистронезависимость

1. Удаленный (12.01.2016 / 15:42)
$login = $_POST['login'];
$name = $login; //имя которое ищем в списке
$adr = "user.txt";//Текстовый файл с именами пользователей в колонку
$names = file_get_contents($adr);
if ( preg_match('/^'.$name.'\:( .*?)\:( .*?)\:( .*?)/i',$names) ) {
echo "Такой логин уже есть";
} else {
echo "не Зарегистрирован такой логин";
}

Все работает кроме регистронезависимости. Где ошибка не пойму. Помогите

2. ramzes (12.01.2016 / 16:39)
В файле только логины разделенные : ?
in_array(explode(':', $names))
---------
Если логины вкоючают кириллицу то модификатор u в регулярке нужен

3. Вантуз-мен (12.01.2016 / 16:48)
1. MaZaHaKeR, тут уж лучше искать в массиве чем регулярной, тем более у тебя регулярка не явная,

Добавлено через 01:23 сек.
2. ramzes, там скорее всего
Саша:пароль:email:что-то
Петя:пароль итд

4. Вантуз-мен (12.01.2016 / 16:59)
1. MaZaHaKeR,
if(stripos(file_get_contents('file.txt'), PHP_EOL.$name.':') !== false)
думаю самый быстрый вариант

5. Вантуз-мен (12.01.2016 / 22:52)
Хотя нет, первую строку не найдет

Вот так лучше
<?php
$search = false;
$file = file('file.txt');
foreach ($file as $key => $line){
$line = explode(':', $line);

if ($login === $line[0]) {
$search = true;
break;
}
}

if ($search) {
echo "Такой логин уже есть";
} else {
echo "не Зарегистрирован такой логин";
}

Добавлено через 03:57 сек.
А еще лучше используй мой класс, специально для работы с файлами
https://github.com/visavi/flystring

с моим классом это будет вот так
<?php
$fly = new Visavi\FlyString('file.txt', ':');

$search = $fly->search(0, $login);

if ($search) {
echo "Такой логин уже есть";
} else {
echo "не Зарегистрирован такой логин";
}

$string вернет массив данных и номер строки или false если не найдено

6. Удаленный (13.01.2016 / 16:46)
спасибо вам всем

URL: https://visavi.net/topics/42775