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

Печать / RSS
37


Дух
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
спасибо вам всем
Для выполнения действия необходимо авторизоваться!
Стикеры / Теги / Правила / Топ тем / Топ тем / Поиск