|
|
|
Проверка URL
|
|||
|---|---|---|---|
|
#18+
Привет! Уже долго пытаюсь найти ошибку в запросе но не могу... нужна ваша помощь. Есть рег выражение: 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 пропускается ведь в ней есть символ "*" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2013, 22:11 |
|
||
|
Проверка URL
|
|||
|---|---|---|---|
|
#18+
Вы уверены, что в той строке, которую вы считаете ссылкой, звездочка является именно символом звездочки, а не %2a ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2013, 22:47 |
|
||
|
Проверка URL
|
|||
|---|---|---|---|
|
#18+
Кстати, проверьте логику первой части выражения. Что-то она кажется странной... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2013, 22:49 |
|
||
|
Проверка URL
|
|||
|---|---|---|---|
|
#18+
miksoftКстати, проверьте логику первой части выражения. Что-то она кажется странной... Мне так и нужно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2013, 23:21 |
|
||
|
Проверка URL
|
|||
|---|---|---|---|
|
#18+
miksoftВы уверены, что в той строке, которую вы считаете ссылкой, звездочка является именно символом звездочки, а не %2a ? да это точно символ звёзочки а не %2a. Перед входом $file я сделал echo "$file"; потом просмотр html кода сделал и там в названии была звёздочка а не %2a. Если я не правильно понял то как это узнать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2013, 23:25 |
|
||
|
Проверка URL
|
|||
|---|---|---|---|
|
#18+
Пробовал с символом "|" тоже самое... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2013, 23:27 |
|
||
|
Проверка URL
|
|||
|---|---|---|---|
|
#18+
Иван_иПеред входом $file я сделал echo "$file";На всякий случай, сделайте echo bin2hex($file) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2013, 23:43 |
|
||
|
Проверка URL
|
|||
|---|---|---|---|
|
#18+
Пробуйте Код: sql 1. В конце "*" можно заменить на "+", если параметры должны быть обязательно. Так же вместо середины (проверка домена) можно определить точное совпадение по домену, если проверка будет не универсальной, а только к примеру для "mp3.name.ru". Если нужнo больше групп, то уберите "?:". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2013, 00:02 |
|
||
|
Проверка URL
|
|||
|---|---|---|---|
|
#18+
miksoftКстати, проверьте логику первой части выражения. Что-то она кажется странной... каким софтом это сделано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2013, 08:48 |
|
||
|
Проверка URL
|
|||
|---|---|---|---|
|
#18+
miksoftИван_иПеред входом $file я сделал echo "$file";На всякий случай, сделайте echo bin2hex($file) Сделал. Результат: 687474703a2f2f6d70332e6e616d652e72752f6d70332d4361726c795f2a4a657073656e2d43616c6c5f4d655f4d617962655f2852656d6978292e6d7033 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2013, 11:48 |
|
||
|
Проверка URL
|
|||
|---|---|---|---|
|
#18+
uvladПробуйте Код: sql 1. В конце "*" можно заменить на "+", если параметры должны быть обязательно. Так же вместо середины (проверка домена) можно определить точное совпадение по домену, если проверка будет не универсальной, а только к примеру для "mp3.name.ru". Если нужнo больше групп, то уберите "?:". Мне не нужно новое рег выражение мне нужно понять почему он пропускает строку с символом звёздочки хотя там прописано что если есть звёздочка то пропускать нельзя. Если понять почему то я сам сделаю рег выражение которое мне необходимо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2013, 11:51 |
|
||
|
Проверка URL
|
|||
|---|---|---|---|
|
#18+
Иван_и, Код: sql 1. Ваше регулярное выражение работает как, разрешаем всё, что не является пробелом (\S) последним символом перед ".mp3" не должно быть ничего из "\s\t\n\r\\:\|\*<>". Убираем квантификатор "+" возле "\S" и ставим его после инвертируемого символьного класса Код: sql 1. Теперь не только разрешает всё, но и смотрит что запрещено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2013, 13:14 |
|
||
|
Проверка URL
|
|||
|---|---|---|---|
|
#18+
uvladИван_и, Код: sql 1. Ваше регулярное выражение работает как, разрешаем всё, что не является пробелом (\S) последним символом перед ".mp3" не должно быть ничего из "\s\t\n\r\\:\|\*<>". Убираем квантификатор "+" возле "\S" и ставим его после инвертируемого символьного класса Код: sql 1. Теперь не только разрешает всё, но и смотрит что запрещено. Хотя тут я не много ошибся. Код: sql 1. Такое рег. выражение будет работать не много иначе. Первый символ всё, что не является пробелом "\s", а все последующие до ".mp3" любые символы не из инвертируемого символьного класса. В данном случае логично было бы убрать метасимвол "\S", так как запрет на пробел уже добавлен Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2013, 13:24 |
|
||
|
Проверка URL
|
|||
|---|---|---|---|
|
#18+
uvlad, Спасибо! Очень доходчиво и верно! Всё работает как надо))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2013, 13:34 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38144726&tid=1464140]: |
0ms |
get settings: |
6ms |
get forum list: |
23ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
70ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 404ms |

| 0 / 0 |
