Using an array as needles in strpos Using an array as needles in strpos php php

Using an array as needles in strpos


@Dave an updated snippet from http://www.php.net/manual/en/function.strpos.php#107351

function strposa($haystack, $needles=array(), $offset=0) {        $chr = array();        foreach($needles as $needle) {                $res = strpos($haystack, $needle, $offset);                if ($res !== false) $chr[$needle] = $res;        }        if(empty($chr)) return false;        return min($chr);}

How to use:

$string = 'Whis string contains word "cheese" and "tea".';$array  = array('burger', 'melon', 'cheese', 'milk');if (strposa($string, $array, 1)) {    echo 'true';} else {    echo 'false';}

will return true, because of array "cheese".

Update: Improved code with stop when the first of the needles is found:

function strposa($haystack, $needle, $offset=0) {    if(!is_array($needle)) $needle = array($needle);    foreach($needle as $query) {        if(strpos($haystack, $query, $offset) !== false) return true; // stop on first true result    }    return false;}$string = 'Whis string contains word "cheese" and "tea".';$array  = array('burger', 'melon', 'cheese', 'milk');var_dump(strposa($string, $array)); // will return true, since "cheese" has been found


str_replace is considerably faster.

$find_letters = array('a', 'c', 'd');$string = 'abcdefg';$match = (str_replace($find_letters, '', $string) != $string);


The below code not only shows how to do it, but also puts it in an easy to use function moving forward. It was written by "jesda". (I found it online)

PHP Code:

<?php/* strpos that takes an array of values to match against a string * note the stupid argument order (to match strpos) */function strpos_arr($haystack, $needle) {    if(!is_array($needle)) $needle = array($needle);    foreach($needle as $what) {        if(($pos = strpos($haystack, $what))!==false) return $pos;    }    return false;}?>

Usage:

$needle = array('something','nothing');$haystack = "This is something";echo strpos_arr($haystack, $needle); // Will echo True$haystack = "This isn't anything";echo strpos_arr($haystack, $needle); // Will echo False