Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как работать с регулярными выражениями в php

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Регулярные выражения или проверка формата ссылки
Алексеей
Отправлено: 28 Февраля, 2013 - 15:33:37
Post Id


Посетитель


Покинул форум
Сообщений всего: 278
Дата рег-ции: Дек. 2011  


Помог: 2 раз(а)




Использую $_GET для скрипта, и нужно проверять формат результат GET, например:

Есть:

С помощью этого, скрипт получает данные с /?style= и прописывает в определенный div с помощью echo:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?if($_GET[style])
  3. echo $_GET[style];
  4. else
  5. echo '/default.css'
  6. ?>
  7.  

И все верно, но осталось проверить на наличие формата, если в /?style= не ссылка на стиль .css то покажет default.css а если в конце ссылки есть .css соответственно должен показывать эту ссылку, помогите пожалуйста, как это сделать.
(Добавление)
А сам я вот так сделал:
PHP:
скопировать код в буфер обмена
  1. <?
  2. $css = $_GET[style];
  3. if(preg_match("/.css/",$css ))
  4.         echo $_GET[style];
  5. else
  6.     echo 'default.css';
  7. ?>

но это не правильно, т.к. нужно проверить конец ссылки , покажите пожалуйста, правильный вариант
 
 Top
esterio
Отправлено: 28 Февраля, 2013 - 15:44:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Алексеей пишет:
$_GET[style]

$_GET['style']
Сначала разберитесь с кавичками

Точка в регул. означает любой символ, нужно \.

Вообщем вопрос очень обширный. Нужно читать. Непомню ссилки но на php.net в доке по preg_* есть полное описание регулярок
 
 Top
Алексеей
Отправлено: 28 Февраля, 2013 - 16:06:27
Post Id


Посетитель


Покинул форум
Сообщений всего: 278
Дата рег-ции: Дек. 2011  


Помог: 2 раз(а)




esterio, спасибо. И лучше почитаю в php.net.
Спасибо за внимание.
 
 Top
LShark
Отправлено: 28 Февраля, 2013 - 18:04:38
Post Id



Частый гость


Покинул форум
Сообщений всего: 240
Дата рег-ции: Нояб. 2012  


Помог: 1 раз(а)




1. Имхо расширение .css получать через substr, так как могут подсунуть что то типа vasia.css.txt.php и будет веселье.
2. Если есть $css = $_GET[style]; то зачем потом echo $_GET[style]; ?

PHP:
скопировать код в буфер обмена
  1. <?
  2. $css = $_GET['style'];
  3. if(substr($css,-4)=='.css')
  4.         echo $css;
  5. else
  6.    echo 'default.css';
  7. ?>

(Отредактировано автором: 28 Февраля, 2013 - 18:07:19)



-----
Истина прежде всего в том, что...
 
 Top
esterio
Отправлено: 28 Февраля, 2013 - 18:07:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




LShark
а еще лучше через
PHP:
скопировать код в буфер обмена
  1. if(pathinfo($css , PATHINFO_EXTENSION) === 'css')
  2. {
  3.         // ...
  4. }

Ваш вариант тоже не лишен проблем
 
 Top
LShark
Отправлено: 28 Февраля, 2013 - 18:14:12
Post Id



Частый гость


Покинул форум
Сообщений всего: 240
Дата рег-ции: Нояб. 2012  


Помог: 1 раз(а)




esterio пишет:
Ваш вариант тоже не лишен проблем

Каких, если не секрет?

Вроде имя файла уже не подменишь "неcss".

Ну разве что придется потмо проверять, есть ли такой файл реально, или нет. Зато на 1 обращение к диску меньше.

(Отредактировано автором: 28 Февраля, 2013 - 18:15:22)



-----
Истина прежде всего в том, что...
 
 Top
OrmaJever Модератор
Отправлено: 28 Февраля, 2013 - 18:55:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




открою вам серкрет, но просто проверка расширения файла ничего не даст. От идеи имени файла в сылке стоит отказатся.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Алексеей
Отправлено: 28 Февраля, 2013 - 19:13:18
Post Id


Посетитель


Покинул форум
Сообщений всего: 278
Дата рег-ции: Дек. 2011  


Помог: 2 раз(а)




OrmaJever, Вы совершенно правы! И сам я это понял, поэтому думаю создать другой вариант изменение стиля скрипта, благодарю за внимание.
LShark, да, я уже выучил и другие варианты на php.net, спасибо, что уделили время!
 
 Top
NoPaper
Отправлено: 28 Февраля, 2013 - 20:10:28
Post Id



Посетитель


Покинул форум
Сообщений всего: 315
Дата рег-ции: Янв. 2012  
Откуда: Минск


Помог: 9 раз(а)




LShark пишет:
esterio пишет:
Ваш вариант тоже не лишен проблем

Каких, если не секрет?

Вроде имя файла уже не подменишь "неcss".

Ну разве что придется потмо проверять, есть ли такой файл реально, или нет. Зато на 1 обращение к диску меньше.

При обращении к жесткому диску расширение обходится нулл байтом(%00) , знаками, которые нельзя использовать в имени файла (~), огромным кол-вом слешей, да и это не весь список...

Алексеей, обращение к диску со стороны скрипта будет? Или файл просто загрузится подключенным клиентом(пользователем)? Если второе, то можно не пудрить мозги и просто проверять наличие расширения.
 
 Top
Алексеей
Отправлено: 28 Февраля, 2013 - 22:33:20
Post Id


Посетитель


Покинул форум
Сообщений всего: 278
Дата рег-ции: Дек. 2011  


Помог: 2 раз(а)




NoPaper пишет:
Алексеей, обращение к диску со стороны скрипта будет? Или файл просто загрузится подключенным клиентом(пользователем)? Если второе, то можно не пудрить мозги и просто проверять наличие расширения.

Нет, в 'style' ставится только путь к css файлу со стороны пользователя, т.е. стиль для скрипта пользователь делает сам и настраивает путь к стилю через /?style=$1
Я тут тупанул, так сказать. Это небезопасно!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB