ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Регулярка с условием
  #1  
Старый 20.05.2010, 15:08
Аватар для GivioN
GivioN
Познающий
Регистрация: 30.03.2008
Сообщений: 64
Провел на форуме:
388255

Репутация: 15
По умолчанию Регулярка с условием

Есть строка $ctr = "форум безопасности antichat.ru";
Есть массив $a с неизвестным количесвом элементов, например 3:
$a[0] = "фор";
$a[1] = "без";
$a[2] = "icha";

$cnt = count ($a); // тут считаем количесво элементов массива, так как оно не известно.

Как сделать условие:
Если в строке присутствуе эти массивы, то делаем то-то.

if ( preg_match ('/что-то тут пишем/' , $ctr) ) {
выполняем то что нужно
}

Последний раз редактировалось GivioN; 20.05.2010 в 15:11..
 
Ответить с цитированием

  #2  
Старый 20.05.2010, 16:57
Аватар для OdaN
OdaN
Участник форума
Регистрация: 04.03.2006
Сообщений: 159
Провел на форуме:
473495

Репутация: 39
Отправить сообщение для OdaN с помощью ICQ
По умолчанию

PHP код:
$ctr "форум безопасности antichat.ru";
$a=array('фор''без''icha');
foreach (
$a as $value) {
if ( 
preg_match ('/'.$value.'/' $ctr) ) {
echo 
"Найдено вхождение $value.";
}

 
Ответить с цитированием

  #3  
Старый 20.05.2010, 17:06
Аватар для 4upakabr0
4upakabr0
Познающий
Регистрация: 14.05.2008
Сообщений: 58
Провел на форуме:
528944

Репутация: 4
По умолчанию

PHP код:
$ctr "форум безопасности antichat.ru";
$a[0] = "фор";
$a[1] = "без";
$a[2] = "icha";
$f=1;
foreach(
$a as $el)
{
    if(!
preg_match("/$el/",$ctr)) {$f=0;break;}

}
if(
$f)
{
//делай чо нужно, все элементы массива были найдены в $ctr


Последний раз редактировалось 4upakabr0; 20.05.2010 в 17:55..
 
Ответить с цитированием

  #4  
Старый 20.05.2010, 17:18
Аватар для roxblnfk
roxblnfk
Познающий
Регистрация: 07.02.2010
Сообщений: 70
Провел на форуме:
217996

Репутация: 56
Отправить сообщение для roxblnfk с помощью ICQ
По умолчанию

> if(!preg_match("/$el/",$ctr)) {$f=0;break;}
в таком случае лучше использовать substr_count() без всяких регулярок
if(substr_count($ctr,$el)==0){$f=0;break;}

Последний раз редактировалось roxblnfk; 20.05.2010 в 19:05..
 
Ответить с цитированием

  #5  
Старый 20.05.2010, 17:20
Аватар для m0Hze
m0Hze
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме:
6462214

Репутация: 3171


По умолчанию

Цитата:
Сообщение от roxblnfk  
> if(!preg_match("/$el/",$ctr)) {$f=0;break;}
в таком случае лучше использовать substr_count() без всяких регулярок
if(substr_count($ctr,$el)>0){$f=0;break;}
PHP код:
if(!stristr($variables,$needle)){...} 
А может ему нужно было сразу все элементы в строке проверить? А не по одному =)
PHP код:
$val = array('one','two','three');
$pattern '#'.implode('.*',$val).'#';
if(!
preg_match($pattern,$body)){...} 
Что-то вроде этого.

Последний раз редактировалось m0Hze; 20.05.2010 в 17:23..
 
Ответить с цитированием

  #6  
Старый 20.05.2010, 17:28
Аватар для 4upakabr0
4upakabr0
Познающий
Регистрация: 14.05.2008
Сообщений: 58
Провел на форуме:
528944

Репутация: 4
По умолчанию

Цитата:
Сообщение от roxblnfk  
> if(!preg_match("/$el/",$ctr)) {$f=0;break;}
в таком случае лучше использовать substr_count() без всяких регулярок
if(substr_count($ctr,$el)>0){$f=0;break;}
Во-первых, не
PHP код:
substr_count($ctr,$el)>
а
PHP код:
substr_count($ctr,$el)==
Во-вторых, чем оно лучше?
В-третьих, читай ТС и его вопрос внимательнее дабы понять какими средствами ему необходимо сделать
 
Ответить с цитированием

  #7  
Старый 20.05.2010, 18:25
Аватар для roxblnfk
roxblnfk
Познающий
Регистрация: 07.02.2010
Сообщений: 70
Провел на форуме:
217996

Репутация: 56
Отправить сообщение для roxblnfk с помощью ICQ
Talking

протестировал, работает, хотя и не правильно
PHP код:
$body='atwo one1 threee ';
$val = array('one','two','three');
$str '('.implode('|',$val).')';
$arr=array_fill(0,count($val),$str);
$text='/'.implode('.*.',$arr).'/';
echo 
preg_match($text,$body); 

Последний раз редактировалось roxblnfk; 20.05.2010 в 19:19..
 
Ответить с цитированием

  #8  
Старый 20.05.2010, 19:14
Аватар для GivioN
GivioN
Познающий
Регистрация: 30.03.2008
Сообщений: 64
Провел на форуме:
388255

Репутация: 15
По умолчанию

Да, уж не ожидал что будет такая горячая темка, горячие посты уже удалили.
Вообщем спасибо всем, кто отписался. особенно 4upakabr0, твой вариант помог, то что надо.
Поставил +++ но чет не добавилось.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как убрать пароль админа Vista?(с условием) REBUUS Болталка 14 17.10.2009 13:35
регулярка rubik-nerubik PHP, PERL, MySQL, JavaScript 11 01.10.2009 09:10
Регулярка тупит. Пхп. Krist_ALL PHP, PERL, MySQL, JavaScript 2 31.07.2009 16:14
Регулярка Trieg PHP, PERL, MySQL, JavaScript 5 04.05.2009 12:39
регулярка попугай PHP, PERL, MySQL, JavaScript 9 17.01.2009 16:37



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ