@Otrivin
junior full-stack сисадмин

Как искать строку по регулярному выражению в массиве?

Есть сайт на Drupal 7, на сайте несколько форм обратной связи, с которой приходит тонна хлама. Пытались ставить готовые антиспам-модули - эффекта не дало.

Хочу попробовать фильтровать спам по неправдоподобным именам (в поле "Ваше имя:" написана белиберда на латинице) непосредственно перед отправкой на почту.

Нашел в модуле функцию, отвечающую за отправку
$message = drupal_mail('webform', 'submission', $address, $language, $mail_params, $email['from']);
if ($message['result']) {
	$send_count += $send_increment;
}


Как обернуть её в проверку по отправляемому на email тексту?
Искать придётся строку, состоящую из "Ваше имя: " и рандомных латинских букв;
Искать среди значений массива $mail_params.

Я попытался так: если в массиве не встречается строка "Ваше имя: wsdfSDFASds", то отправляем письмо
if (!array_search(preg_grep('/Ваше имя: ([A-Za-z])*/', $mail_params))){
	$message = drupal_mail('webform', 'submission', $address, $language, $mail_params, $email['from']);
	if ($message['result']) {
		$send_count += $send_increment;
	}
}

Но или неверно составил регулярное выражение, или неверно построил сам код; в общем, это решение не работает.
  • Вопрос задан
  • 203 просмотра
Пригласить эксперта
Ответы на вопрос 1
afi13
@afi13
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы