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
Форумы портала PHP.SU :: Версия для печати :: Регулярное выражение
Форумы портала PHP.SU » » Вопросы новичков » Регулярное выражение

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

1. Tox - 20 Февраля, 2012 - 12:06:48 - перейти к сообщению
Есть функция, которой мы передаем ссылку. Ну и функция решает - допустимая это ссылка, или нет. Первую часть я написал, вот вторую серого вещ-ва не хватает "допонять":
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 недавно, покажите, как надо это формить.
2. illy - 20 Февраля, 2012 - 12:12:19 - перейти к сообщению
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. }
3. Tox - 20 Февраля, 2012 - 12:14:06 - перейти к сообщению
благодарю. и правда, гениально Улыбка
4. illy - 20 Февраля, 2012 - 12:50:44 - перейти к сообщению
непойму почему не помогают с простыми вопросами Не понял
5. Tox - 20 Февраля, 2012 - 21:12:19 - перейти к сообщению
а такой еще вопрос - как проверить по шаблону? то есть, приходит в функцию дата, например. А нам надо проверить по шаблону - дата это или нет.
day#month#year#hour#minute - 20#02#2012#21#59
я читал про preg_replace, но это поиск и замена, а нужен поиск на совпадение. такое вообще есть?
6. snikers987 - 20 Февраля, 2012 - 21:19:10 - перейти к сообщению
Tox пишет:
а такой еще вопрос - как проверить по шаблону? то есть, приходит в функцию дата, например. А нам надо проверить по шаблону - дата это или нет.
day#month#year#hour#minute - 20#02#2012#21#59
я читал про preg_replace, но это поиск и замена, а нужен поиск на совпадение. такое вообще есть?


Ну preg_match() этим и занимается.
7. Tox - 20 Февраля, 2012 - 21:25:22 - перейти к сообщению
прошу прощения) с утра "разрабатываю", голова уже кругом
8. illy - 20 Февраля, 2012 - 22:00:42 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $text="20#02#2012#21#59";
  2. $text.="#"; // может и не надо
  3. $m=split('#',$text);
  4. $k=explode('#',$text);

что в этом роде. не проверял
9. snikers987 - 20 Февраля, 2012 - 22:51:48 - перейти к сообщению
illy пишет:
PHP:
скопировать код в буфер обмена
  1. $text="20#02#2012#21#59";
  2. $text.="#"; // может и не надо
  3. $m=split('#',$text);
  4. $k=explode('#',$text);

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


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

То есть лучше всего юзать explode?
11. illy - 21 Февраля, 2012 - 12:06:49 - перейти к сообщению
http://php.su/functions/?split
split - делает из строки массив с помощью регулярного выражения.
Если вам не нужна мощь регулярных выражений, быстрее сработает explode(), которая не вызывает перегрузки машины регулярных выражений.
12. snikers987 - 21 Февраля, 2012 - 12:40:38 - перейти к сообщению
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() вполне достаточно.

 

Powered by ExBB FM 1.0 RC1