note 37441 added to function.array-search
| From: | name at phism dot org | 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