Я знаю, что это не отвечает на вопрос ОП, но хотел бы прокомментировать, так как эта страница находится в верхней части Google для strpos с несколькими иглами. Вот простое решение для этого (опять же, это не относится к вопросу ОП - извините):
$img_formats = array('.jpg','.png');
$missing = array();
foreach ( $img_formats as $format )
if ( stripos($post['timer_background_image'], $format) === false ) $missing[] = $format;
if (count($missing) == 2)
return array("save_data"=>$post,"error"=>array("message"=>"The background image must be in a .jpg or .png format.","field"=>"timer_background_image"));
Если в массив $ missing добавлено 2 элемента, это означает, что ввод не удовлетворяет ни одному из форматов изображения в массиве $ img_formats. В этот момент вы знаете, что можете вернуть ошибку и т. Д. Это можно легко превратить в небольшую функцию:
function m_stripos( $haystack = null, $needles = array() ){
//return early if missing arguments
if ( !$needles || !$haystack ) return false;
// create an array to evaluate at the end
$missing = array();
//Loop through needles array, and add to $missing array if not satisfied
foreach ( $needles as $needle )
if ( stripos($haystack, $needle) === false ) $missing[] = $needle;
//If the count of $missing and $needles is equal, we know there were no matches, return false..
if (count($missing) == count($needles)) return false;
//If we're here, be happy, return true...
return true;
}
Вернемся к нашему первому примеру, используя вместо этого функцию:
$needles = array('.jpg','.png');
if ( !m_strpos( $post['timer_background_image'], $needles ) )
return array("save_data"=>$post,"error"=>array("message"=>"The background image must be in a .jpg or .png format.","field"=>"timer_background_image"));
Конечно, то, что вы делаете после того, как функция возвращает true или false, зависит от вас.