Есть строка $ctr = "форум безопасности antichat.ru"; Есть массив $a с неизвестным количесвом элементов, например 3: $a[0] = "фор"; $a[1] = "без"; $a[2] = "icha"; $cnt = count ($a); // тут считаем количесво элементов массива, так как оно не известно. Как сделать условие: Если в строке присутствуе эти массивы, то делаем то-то. if ( preg_match ('/что-то тут пишем/' , $ctr) ) { выполняем то что нужно }
PHP: $ctr = "форум безопасности antichat.ru"; $a=array('фор', 'без', 'icha'); foreach ($a as $value) { if ( preg_match ('/'.$value.'/' , $ctr) ) { echo "Найдено вхождение $value."; } }
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 }
> if(!preg_match("/$el/",$ctr)) {$f=0;break;} в таком случае лучше использовать substr_count() без всяких регулярок if(substr_count($ctr,$el)==0){$f=0;break;}
Во-первых, не PHP: substr_count($ctr,$el)>0 а PHP: substr_count($ctr,$el)==0 Во-вторых, чем оно лучше? В-третьих, читай ТС и его вопрос внимательнее дабы понять какими средствами ему необходимо сделать
протестировал, работает, хотя и не правильно 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);
Да, уж не ожидал что будет такая горячая темка, горячие посты уже удалили. Вообщем спасибо всем, кто отписался. особенно 4upakabr0, твой вариант помог, то что надо. Поставил +++ но чет не добавилось.