Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Регулярка с условием (https://forum.antichat.xyz/showthread.php?t=205423)

GivioN 20.05.2010 15:08

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

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

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

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

OdaN 20.05.2010 16:57

PHP код:

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



4upakabr0 20.05.2010 17:06

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



roxblnfk 20.05.2010 17:18

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

m0Hze 20.05.2010 17:20

Цитата:

Сообщение от 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)){...} 

Что-то вроде этого.

4upakabr0 20.05.2010 17:28

Цитата:

Сообщение от 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)==

Во-вторых, чем оно лучше?
В-третьих, читай ТС и его вопрос внимательнее дабы понять какими средствами ему необходимо сделать :)

roxblnfk 20.05.2010 18:25

протестировал, работает, хотя и не правильно :)
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); 


GivioN 20.05.2010 19:14

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


Время: 21:56