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.SU

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


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

> Без описания
Tox
Отправлено: 20 Февраля, 2012 - 12:06:48
Post Id



Посетитель


Покинул форум
Сообщений всего: 314
Дата рег-ции: Нояб. 2011  
Откуда: Россия


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




Есть функция, которой мы передаем ссылку. Ну и функция решает - допустимая это ссылка, или нет. Первую часть я написал, вот вторую серого вещ-ва не хватает "допонять":
PHP:
скопировать код в буфер обмена
  1. function MyF($data){
  2. //i - назависимо от регистра
  3. if (preg_match("/http:\/\/site.ru\/folder\//i", $data)) {
  4.     $res=true;
  5. } else {
  6.     $res=false;
  7. }
  8. return $res;
  9. }

Фишка понятна - если в функцию приходит "121414", она посылает клиента в долгую прогулку по Месопотамии, если же "http://site.ru/folder/", то функция пропускает. Но. Меня интересует такая ситуация - как сделать так, чтобы она еще и проверяла расширение страницы, которую ей передают? То есть с ".html" функция пускает, а с, например, "js" - отправляет в путешествие.
Занимаюсь php недавно, покажите, как надо это формить.


-----
In Console We Trust. Code hard. Or die.
 
 Top
illy
Отправлено: 20 Февраля, 2012 - 12:12:19
Post Id



Участник


Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011  
Откуда: от верблюда)


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




PHP:
скопировать код в буфер обмена
  1. function MyF($data){
  2. //i - назависимо от регистра
  3. if (preg_match("/http:\/\/site.ru\/folder\/.*\.html$/i", $data)) {
  4.     $res=true;
  5. } else {
  6.     $res=false;
  7. }
  8. return $res;
  9. }


-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
Tox
Отправлено: 20 Февраля, 2012 - 12:14:06
Post Id



Посетитель


Покинул форум
Сообщений всего: 314
Дата рег-ции: Нояб. 2011  
Откуда: Россия


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




благодарю. и правда, гениально Улыбка


-----
In Console We Trust. Code hard. Or die.
 
 Top
illy
Отправлено: 20 Февраля, 2012 - 12:50:44
Post Id



Участник


Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011  
Откуда: от верблюда)


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




непойму почему не помогают с простыми вопросами Не понял


-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
Tox
Отправлено: 20 Февраля, 2012 - 21:12:19
Post Id



Посетитель


Покинул форум
Сообщений всего: 314
Дата рег-ции: Нояб. 2011  
Откуда: Россия


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




а такой еще вопрос - как проверить по шаблону? то есть, приходит в функцию дата, например. А нам надо проверить по шаблону - дата это или нет.
day#month#year#hour#minute - 20#02#2012#21#59
я читал про preg_replace, но это поиск и замена, а нужен поиск на совпадение. такое вообще есть?


-----
In Console We Trust. Code hard. Or die.
 
 Top
snikers987
Отправлено: 20 Февраля, 2012 - 21:19:10
Post Id



Участник


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


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




Tox пишет:
а такой еще вопрос - как проверить по шаблону? то есть, приходит в функцию дата, например. А нам надо проверить по шаблону - дата это или нет.
day#month#year#hour#minute - 20#02#2012#21#59
я читал про preg_replace, но это поиск и замена, а нужен поиск на совпадение. такое вообще есть?


Ну preg_match() этим и занимается.


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
Tox
Отправлено: 20 Февраля, 2012 - 21:25:22
Post Id



Посетитель


Покинул форум
Сообщений всего: 314
Дата рег-ции: Нояб. 2011  
Откуда: Россия


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




прошу прощения) с утра "разрабатываю", голова уже кругом


-----
In Console We Trust. Code hard. Or die.
 
 Top
illy
Отправлено: 20 Февраля, 2012 - 22:00:42
Post Id



Участник


Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011  
Откуда: от верблюда)


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




PHP:
скопировать код в буфер обмена
  1. $text="20#02#2012#21#59";
  2. $text.="#"; // может и не надо
  3. $m=split('#',$text);
  4. $k=explode('#',$text);

что в этом роде. не проверял


-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
snikers987
Отправлено: 20 Февраля, 2012 - 22:51:48
Post Id



Участник


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


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




illy пишет:
PHP:
скопировать код в буфер обмена
  1. $text="20#02#2012#21#59";
  2. $text.="#"; // может и не надо
  3. $m=split('#',$text);
  4. $k=explode('#',$text);

что в этом роде. не проверял


split() deprecated давно


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
Tox
Отправлено: 21 Февраля, 2012 - 12:02:40
Post Id



Посетитель


Покинул форум
Сообщений всего: 314
Дата рег-ции: Нояб. 2011  
Откуда: Россия


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




А что быстрее работает? split или explode? Я так понял ими обеими можно стоки "разбивать" типа "20#02#2012#21#59".
Цитата:
Заметьте, что если вам не нужна мощь регулярных выражений, быстрее сработает explode(), которая не вызывает перегрузки машины регулярных выражений.

То есть лучше всего юзать explode?


-----
In Console We Trust. Code hard. Or die.
 
 Top
illy
Отправлено: 21 Февраля, 2012 - 12:06:49
Post Id



Участник


Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011  
Откуда: от верблюда)


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




http://php.su/functions/?split
split - делает из строки массив с помощью регулярного выражения.
Если вам не нужна мощь регулярных выражений, быстрее сработает explode(), которая не вызывает перегрузки машины регулярных выражений.


-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
snikers987
Отправлено: 21 Февраля, 2012 - 12:40:38
Post Id



Участник


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


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




illy пишет:
http://php.su/functions/?split
split - делает из строки массив с помощью регулярного выражения.
Если вам не нужна мощь регулярных выражений, быстрее сработает explode(), которая не вызывает перегрузки машины регулярных выражений.


http://php.su/functions/?preg_split
Может еще ereg() вместо preg_match() использовать?
(Добавление)
Tox пишет:
А что быстрее работает? split или explode? Я так понял ими обеими можно стоки "разбивать" типа "20#02#2012#21#59".
Цитата:
Заметьте, что если вам не нужна мощь регулярных выражений, быстрее сработает explode(), которая не вызывает перегрузки машины регулярных выражений.

То есть лучше всего юзать explode?

В данном случае explode() вполне достаточно.

(Отредактировано автором: 21 Февраля, 2012 - 12:43:58)



-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 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