powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Проверка URL
15 сообщений из 15, страница 1 из 1
Проверка URL
    #38144676
Иван_и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет! Уже долго пытаюсь найти ошибку в запросе но не могу... нужна ваша помощь.

Есть рег выражение:

if (preg_match("/^(https?:\/\/www\.|https?:\/\/|www\.)(\S+[^\s\t\n\r\\:\|\*<>])(\.mp3)$/Diu", $file, $match))

Почему ссылка

http://mp3.name.ru/mp3-Carly_*Jepsen-Call_Me_Maybe_(Remix).mp3

пропускается ведь в ней есть символ "*" ?
...
Рейтинг: 0 / 0
Проверка URL
    #38144697
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы уверены, что в той строке, которую вы считаете ссылкой, звездочка является именно символом звездочки, а не %2a ?
...
Рейтинг: 0 / 0
Проверка URL
    #38144699
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, проверьте логику первой части выражения. Что-то она кажется странной...
...
Рейтинг: 0 / 0
Проверка URL
    #38144722
Иван_и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftКстати, проверьте логику первой части выражения. Что-то она кажется странной...

Мне так и нужно...
...
Рейтинг: 0 / 0
Проверка URL
    #38144725
Иван_и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftВы уверены, что в той строке, которую вы считаете ссылкой, звездочка является именно символом звездочки, а не %2a ?

да это точно символ звёзочки а не %2a. Перед входом $file я сделал echo "$file"; потом просмотр html кода сделал и там в названии была звёздочка а не %2a.

Если я не правильно понял то как это узнать?
...
Рейтинг: 0 / 0
Проверка URL
    #38144726
Иван_и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробовал с символом "|" тоже самое...
...
Рейтинг: 0 / 0
Проверка URL
    #38144739
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван_иПеред входом $file я сделал echo "$file";На всякий случай, сделайте echo bin2hex($file)
...
Рейтинг: 0 / 0
Проверка URL
    #38144758
uvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробуйте

Код: sql
1.
^(?:https?://)?(?:www.)?((?:[\w\d][-\w\d\.]{0,61}[\w\d]\.[a-z]{2,4}/)(?:[\S][^\s\t\n\r\\:\|\*<>]*)\.mp3)$



В конце "*" можно заменить на "+", если параметры должны быть обязательно. Так же вместо середины (проверка домена) можно определить точное совпадение по домену, если проверка будет не универсальной, а только к примеру для "mp3.name.ru". Если нужнo больше групп, то уберите "?:".
...
Рейтинг: 0 / 0
Проверка URL
    #38144918
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftКстати, проверьте логику первой части выражения. Что-то она кажется странной...
каким софтом это сделано?
...
Рейтинг: 0 / 0
Проверка URL
    #38144987
Иван_и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftИван_иПеред входом $file я сделал echo "$file";На всякий случай, сделайте echo bin2hex($file)

Сделал. Результат:

687474703a2f2f6d70332e6e616d652e72752f6d70332d4361726c795f2a4a657073656e2d43616c6c5f4d655f4d617962655f2852656d6978292e6d7033
...
Рейтинг: 0 / 0
Проверка URL
    #38144989
Иван_и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
uvladПробуйте

Код: sql
1.
^(?:https?://)?(?:www.)?((?:[\w\d][-\w\d\.]{0,61}[\w\d]\.[a-z]{2,4}/)(?:[\S][^\s\t\n\r\\:\|\*<>]*)\.mp3)$



В конце "*" можно заменить на "+", если параметры должны быть обязательно. Так же вместо середины (проверка домена) можно определить точное совпадение по домену, если проверка будет не универсальной, а только к примеру для "mp3.name.ru". Если нужнo больше групп, то уберите "?:".

Мне не нужно новое рег выражение мне нужно понять почему он пропускает строку с символом звёздочки хотя там прописано что если есть звёздочка то пропускать нельзя. Если понять почему то я сам сделаю рег выражение которое мне необходимо.
...
Рейтинг: 0 / 0
Проверка URL
    #38145028
uvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Иван_и,

Код: sql
1.
(\S+[^\s\t\n\r\\:\|\*<>])(\.mp3)



Ваше регулярное выражение работает как, разрешаем всё, что не является пробелом (\S) последним символом перед ".mp3" не должно быть ничего из "\s\t\n\r\\:\|\*<>".

Убираем квантификатор "+" возле "\S" и ставим его после инвертируемого символьного класса
Код: sql
1.
(\S[^\s\t\n\r\\:\|\*<>]+)(\.mp3)



Теперь не только разрешает всё, но и смотрит что запрещено.
...
Рейтинг: 0 / 0
Проверка URL
    #38145030
uvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
uvladИван_и,

Код: sql
1.
(\S+[^\s\t\n\r\\:\|\*<>])(\.mp3)



Ваше регулярное выражение работает как, разрешаем всё, что не является пробелом (\S) последним символом перед ".mp3" не должно быть ничего из "\s\t\n\r\\:\|\*<>".

Убираем квантификатор "+" возле "\S" и ставим его после инвертируемого символьного класса
Код: sql
1.
(\S[^\s\t\n\r\\:\|\*<>]+)(\.mp3)



Теперь не только разрешает всё, но и смотрит что запрещено.

Хотя тут я не много ошибся.

Код: sql
1.
(\S[^\s\t\n\r\\:\|\*<>]+)(\.mp3)



Такое рег. выражение будет работать не много иначе. Первый символ всё, что не является пробелом "\s", а все последующие до ".mp3" любые символы не из инвертируемого символьного класса. В данном случае логично было бы убрать метасимвол "\S", так как запрет на пробел уже добавлен

Код: sql
1.
([^\s\t\n\r\\:\|\*<>]+)(\.mp3)
...
Рейтинг: 0 / 0
Проверка URL
    #38145032
Иван_и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
uvlad,

Спасибо! Очень доходчиво и верно! Всё работает как надо)))
...
Рейтинг: 0 / 0
Проверка URL
    #38145321
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
РенатmiksoftКстати, проверьте логику первой части выражения. Что-то она кажется странной...
каким софтом это сделано?Это онлайн-сервис www.regexper.com
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Проверка URL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]