搜索数组函数 - 需要更具限制性

时间:2013-02-12 17:34:40

标签: php arrays search

我使用此功能搜索数组:

function search_array ( $array, $term )
    {
       foreach ( $array as $key => $value )
            if ( stipos( $value, $term ) !== false )
            $val = str_replace('"',"",preg_replace("/[a-zA-Z0-9]=/","",$array[$key]));
               if (isset($val)) return $val;
          return false;
    } 

这很有效,但我需要做的是稍微限制一些。

 $a = (search_array($l, "7=")); echo "Device ID: $a";

这样做有效,但我只希望在7=而非17=27=上进行匹配。 知道我如何使这个匹配我输入的内容而不是试图扩展它吗?

抱歉,我应该包含我在PHP4中使用的这个功能。

function stipos($haystack, $needle){

    return strpos($haystack, stristr( $haystack, $needle ));

}

这些声明类似于;

1 =“设备”,3 =“用户”,7 =“ID123456”,27 =“节点”等

如果我正在搜索7 =,我希望返回的结果为ID123456

目前我收到的2Node是从27 =“Node”

获取的

这是我如何使用它的一个例子:

 $line = "1=\"Device\",3=\"User\",7=\"ID123456\",27=\"Node\"";
 $q = explode(",",str_replace('"','',$line));
 $p = (search_array($q, "7=")); echo "ID : ".$p;

我想要返回7 =,但是我得到的值是27 =并且它的初始值为2,导致

ID : 2Node

ID : ID123456

2 个答案:

答案 0 :(得分:0)

<?php
$strings = array();
$strings[] = '0=';
$strings[] = '1=';
$strings[] = '2=';
$strings[] = '3=';
$strings[] = '10=';
$strings[] = '12=';
$strings[] = 'a2=';
$strings[] = 'a1232=';
$strings[] = ' 4= ';
$strings[] = ' 5= ';
$strings[] = ' 6=a';

foreach($strings as $string)
{
    if(preg_match('/^\d{1}=$/', $string))
    {
        echo $string."<br>\n";
    }
}

输出:

0=
1=
2=
3=

答案 1 :(得分:0)

决定使用:

$line = "1=\"Device\",3=\"User\",7=\"ID123456\",27=\"Node\"";

$value_7 = null;
if(preg_match('#\b7="([^"]*)"#', $line, $matches)) {
    $value_7 = $matches[1];
}
var_dump($value_7);