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になると思います。

現在、27="Node"から取得した2Nodeが返されます。

これは私がこれをどのように使用しているかの例です:

 $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 に答える