我使用此功能搜索数组:
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
答案 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);