note 37441 added to function.array-search

From: Date: Sat, 15 Nov 2003 02:22:19 +0000
Subject: note 37441 added to function.array-search
Groups: php.notes 
Request: Send a blank email to php-notes+get-60409@lists.php.net to get a copy of this message
here's a way to do a case insensitive array search that accepts wildcards and disregards file extensions 4 letters or less: function searchar($string, $array) { $ao = 0; $ap = 0; $arr = array(); $string = strtolower($string); $posval = strpos($string, '*'); $arr4 = explode('*', $string); while($ao<= (count($array) - 1)){ $go = 0; $array[$ao] = strtolower($array[$ao]); if(strpos($array[$ao], '.')!== false){ if(strlen($array[$ao]>= 5)){ $setv = 5; } else{ $setv = strlen($array[$ao]); } $strr2 = substr($array[$ao], strpos($array[$ao], '.', (strlen($array[$ao]) - $setv))); $array[$ao] = substr($array[$ao], 0, (strlen($array[$ao]) - strlen($strr2))); } if($posval!== false && $string!== '*'){ $as = 0; $doit = 1; while($as<= (count($arr4) - 1)){ if($arr4[$as]!== NULL && $arr4[$as]!== ''){ $arr5[$as] = substr($array[$ao], strpos($array[$ao], $arr4[$as]), strlen($arr4[$as])); if($as== 0){ $arr6[$as] = strpos($array[$ao], $arr4[$as]); } else{ $offset = ($arr6[$as - 1] + strlen($arr5[$as - 1])); $arr6[$as] = strpos($array[$ao], $arr4[$as], $offset); } } $as++; } if(join($arr4)!== join($arr5)){ $doit = 0; } if(count($arr4)> 2){ $at = 0; while($at<= (count($arr5) - 1)){ if($at!== 0 && $arr6[$at]< $arr6[$at - 1]){ $doit = 0; } $at++; } } if($doit== 1 && $posval> 0 && $arr4[0]!== substr($array[$ao], 0, strlen($arr4[0]))){ $doit = 0; } if($doit== 1 && false== strpos($string, '*', (strlen($string) - 1))){ if($arr4[count($arr4) - 1]!== substr($array[$ao], (strlen($array[$ao]) - strlen($arr4[count($arr4) - 1])))){ $doit = 0; } } if($doit== 1){ $go = 1; } } if($string== $array[$ao]){ $go = 1; } if($string== implode(" ", explode("_", $array[$ao]))){ $go = 1; } if($go== 1 && !in_array($ao, $arr)){ $arr[$ap] = $ao; $ap++; } $ao++; } return $arr; } it may not be efficient, but it does the job. ---- Manual Page -- http://www.php.net/manual/en/function.array-search.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+37441 Delete -- http://master.php.net/manage/user-notes.php?action=delete+37441&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+37441&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#60409) next »