0

我使用这个函数来搜索数组:

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
4

2 回答 2

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=
于 2013-02-12T17:56:59.650 回答
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);
于 2013-02-14T09:32:13.520 回答