[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Внезапное падение preg_match_all
alex12060
Добрый всем вечер!

Столкнулся с такой проблемой, у меня есть файл, в нем 30К строк. Нужно в нем найти ФТП и записать их в базу (этот вопрос решен уже, если кто-то подумал, что я опять по этому поводу :))

Все работает отменно, спасибо киллеру, но при парсинге такой строки:


ftp://k-ch.chytrak.cz:.klнћїнїІa.@k-ch.chytrak.cz


У меня вылетает функция preg_match_all и возвращает пустой массив.

Эта строка находится ~ на 3К строке, т.е. дальше не хочет парсить.

А если уберу эти страшные символы
нћїнїІa
при том - все сразу, то парсит все нормально. Это не есть хорошо...

Как можно это дело "экранировать"? Или все-же их вырезать, создавая таблицу "опасных" символов? Спасибо заранее!



Спустя 55 минут, 52 секунды (26.10.2011 - 19:03) Nikitian написал(а):
Регулярку-то покажите

Спустя 41 минута, 9 секунд (26.10.2011 - 19:44) killer8080 написал(а):
alex12060
а в какой кодировке текст? Видимо не utf-8.

Спустя 53 минуты, 40 секунд (26.10.2011 - 20:38) alex12060 написал(а):
killer8080

Обычный text/plain

Nikitian

#(?:ftp://)?[a-z0-9+!*(),;?&=\$%~@_.-]+(?::[a-zа-яё0-9+!*(),;?~@%&=\$_.-]+)?@[а-яёa-z0-9-_+\$]+(?:\.[а-яa-z0-9+\$_-]+)*(?:\:[0-9]{2,5})?#iu

Спустя 1 час, 6 минут, 20 секунд (26.10.2011 - 21:44) imbalance_hero написал(а):
alex12060
Кодировка файла точно utf8 ? Попробуй убрать u, или просто вывести данные на экран, если будет выводить с крякозябрами, то отформатируй через iconv, может поможет.

Спустя 29 минут, 6 секунд (26.10.2011 - 22:13) Winston написал(а):
Хм... странно, но у меня работает. Попробуй такую регулярку
'#(?:ftp://)?[\pL\pN_!*(),;?&=$.-]+(?::[\pL\pN_+!*(),;?&=$.-]+)?@[\pL\pN_+$-]+(?:\.[\pL\pN_+$-]+)*(?::\pN{2,5})?#iu'




Спустя 1 минута, 42 секунды Winston написал(а):
Код
Свернутый текст
$str = '
s059:NAM4bfприветёёЁq@uranus.f19.htw-berlin.de
ftp://k-ch.chytrak.cz:.klнћїнїІa.@k-ch.chytrak.cz
нћїнїІa
bkdrqp:bokDrqнћїнїІap@ftp.phtoawrds.com:21
lombia:1fq34tyh@77.245.33.12:22
нћїнїІa
Привет, меня зовут тест. Я тебе передаю свои контакты для доступа по фтп: s059:NAM4bfq@uranus.f19.htw-berlin.de. Если что, не шали там!! :)'

;
$preg = '#(?:ftp://)?[\pL\pN_!*(),;?&=$.-]+(?::[\pL\pN_+!*(),;?&=$.-]+)?@[\pL\pN_+$-]+(?:\.[\pL\pN_+$-]+)*(?::\pN{2,5})?#iu';

preg_match_all($preg, $str, $res);

echo '<pre>'.print_r($res,1).'</pre>';


Результат
Свернутый текст
Array
(
[0] => Array
(
[0] => s059:NAM4bfприветёёЁq@uranus.f19.htw-berlin.de
[1] => ftp://k-ch.chytrak.cz:.klнћїнїІa.@k-ch.chytrak.cz
[2] => bkdrqp:bokDrqнћїнїІap@ftp.phtoawrds.com:21
[3] => lombia:1fq34tyh@77.245.33.12:22
[4] => s059:NAM4bfq@uranus.f19.htw-berlin.de
)

)

Спустя 3 минуты, 4 секунды (26.10.2011 - 22:16) Игорь_Vasinsky написал(а):
Winston
Может у него действительно файл в анси - а модификатор u в регулярке...

предположение просто.

Спустя 6 минут, 26 секунд (26.10.2011 - 22:22) alex12060 написал(а):
Тут к сожалению съел символы.
и к тому-же, у меня при проверке этой строки на просто preg_match он выдал 1.

Ладно, я пока отложу это дело. Если будут претензии, плотней займусь.

Спустя 1 минута, 37 секунд (26.10.2011 - 22:24) Winston написал(а):
Цитата (alex12060 @ 26.10.2011 - 22:22)
Тут к сожалению съел символы.

Что значит съел? Правильно отпарсил ?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.