[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: magnet url
krimatis
Всем доброе время суток.
Ребята подскажите пожалуйста, как составить рег выражение для проверки магнетки.
Нашел с пхпбб мода, но к сожалению он не устраивает, хочется что бы выполнялась более сложная проверка
Что-то вроде такого
/magnet:?xt=urn:tree:tiger:([A-Z0-9{39}])&xl=([0-9])&dn=(вот тут не знаю как закончить)/

После &dn= идет имя файла, записывается как и обычный урл передаваемый как GET запрос, т.е. используюся + для пробелов а русские символы представлены как 80%D0%B0%D0% и т.д.
Ну вот например.
magnet:?xt=urn:tree:tiger:5ZAVYLJXXQKNKIV7KQVCZC6HW2KJ4MJMH3MWFFQ&xl=30374300&dn=Corel+Draw+11+%D0%B4%D0%BB%D1%8F+%D0%BC%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B0+-+%D0%BF%D0%BE%D0%BB%D0%BD%D0%BE%D0%B5+%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC+%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%B0+%D0%92.%D0%AD.pdf

примерно должно выполнятся такое условие.
/magnet:?xt=urn:tree:tiger:([A-Z0-9{39}])&xl=([0-9])&dn=(а тут те символы которые запрещены или же наоборот разрешены)/

Заранее благодарен. smile.gif




Спустя 4 часа, 32 минуты, 1 секунда (7.05.2010 - 11:20) DedMorozzz написал(а):
#[A-Z%0-9\+\.-]+\.[A-z0-9]+#

Спустя 2 дня, 11 часов, 43 минуты, 9 секунд (9.05.2010 - 23:03) krimatis написал(а):
Спасибо DedMorozzz, но это не совсем то.
Вот я составил новое выражение
/^(magnet:)(\?xt=urn:)(tree:)(tiger:)([A-Z0-9])+(&xl=)([A-Z0-9])+(&dn=)[a-zA-Z0-9+-_%!()]+$/
Оно работает так как мне нужно, но… как говорится есть одно НО. Я вот перечислил символы которые разрешены, но почему то в месте с ними он еще и разрешает <>? /\ , как мне их запретить, или строго указать что можно использовать символы которые я перечислили.
Помогите пожалуйста, заранее благодарен.

Спустя 12 часов, 24 минуты, 20 секунд (10.05.2010 - 11:28) DedMorozzz написал(а):
Цитата
+-_%!
Вот в этом моменте проекранируй минус. Иль поставь его в самый конец. Сейчас задан диапазон символов между "+" и "_"

Спустя 5 дней, 6 минут, 4 секунды (15.05.2010 - 11:34) krimatis написал(а):
Проекранировал, (вот так вот \- правильно?) но эффекта ноль(( я имею ввиду что мб оно и заработало но перестало другие символы разпознавать

Спустя 6 минут, 36 секунд (15.05.2010 - 11:40) DedMorozzz написал(а):
весь код в студию это раз. И не наю чем те моя регулярка не понравилась. Твой текст на ней проверял - всё адекватно

Спустя 12 часов, 35 минут, 58 секунд (16.05.2010 - 00:16) krimatis написал(а):
DedMorozzz, прошу прощения за беспокойство happy.gif , я все таки добил эту регулярку) вот как у меня это вышло)

function MagnetURL ($magnet)
{ // проверка магнет ссылки
if (preg_match('/^(magnet:)(\?xt=urn:)(tree:)(tiger:)([A-Z0-9]{39,39})+(&xl=)([A-Z0-9])+(&dn=)[^\^;\*\<>|{}#`@"\'=]+$/', $magnet))
{
return true;
}
else
{
return false;
}
}



Но осталось последнее но happy.gif
В именах файлов разрешается использовать одинарные кавычки. Это не совсем гуд) как лучше сделать? Запретить их вовсе как сейчас? Или же экранировать их перед сохранением в базе, а после извлечения удалять?

Спустя 9 часов, 1 минута, 58 секунд (16.05.2010 - 09:18) DedMorozzz написал(а):
Опасных символов не бывает. Бывает их неправильная обработка.
Запретиться кавычки? Великолепное решение. А ещё запретить кириллицу, что бы не было проблем с кодировками и запретить кому-либо что-то писать, а то вдруг smile.gif
Мораль: Правильная фильтрация входящих и выходящих данных - вот что необходимо, а не 2 сотни запретов, где можно лишь смотреть, а то не дай бог...
Где-то в 2 часа по Москве вернусь кину пример, где сие хорошо рассписанно.

Спустя 6 часов, 16 минут, 13 секунд (16.05.2010 - 15:35) krimatis написал(а):
Спасибо я уже не один раз читал http://phpforum.ru/index.php?showtopic=21213 и усвоил мораль twin\а о символах.
addslashes мне в помощь. smile.gif

Спустя 1 год, 11 месяцев, 8 дней, 13 часов, 16 минут, 20 секунд (25.04.2012 - 04:51) bugmenot написал(а):
вообщем нужен парсер магнет ссылок в виде php функции, может ктонить уже писал подобное, из готового и подобного нашел только вот такой класс http://codepad.org/Dk4HZHdi
но он слишком забубненный для моих мозгов, может можно его как нить упростить?
Быстрый ответ:

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