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

Печать RSS
117


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

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

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

Господин ПЖ
0
1. MaZaHaKeR, тут уж лучше искать в массиве чем регулярной, тем более у тебя регулярка не явная,

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

Господин ПЖ
0
1. MaZaHaKeR,
if(stripos(file_get_contents('file.txt'), PHP_EOL.$name.':') !== false)
думаю самый быстрый вариант
Изменил: Вантуз-мен (12.01.2016 / 17:00)

Господин ПЖ
0
Хотя нет, первую строку не найдет

Вот так лучше
<?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 если не найдено
Изменил: Вантуз-мен (12.01.2016 / 22:52)

Дух
0
спасибо вам всем
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск