0

私は次を使用してソリューションmysqlfを見つけました:

foreach ($output as $value) {
    if (strpos($value, "]:") > -1) {
        $tal = substr($value, strpos($value, "]:") +3) . "<br>";
        echo $tal;
    }
}

これは次を返します: -210 -212


前もって感謝します。

私は preg したいので、次の行のみを取得します: [10] => [147]: -210 または [10] => [147]: -210 と [21] => [148]: -212 の両方

[147]:特定の情報を取得するためのより良い方法はありますか?

私の配列 $output には以下が含まれます:

Array
(
    [0] => modpoll 3.4 - FieldTalk(tm) Modbus(R) Master Simulator
    [1] => Copyright (c) 2002-2013 proconX Pty Ltd
    [2] => Visit http://www.modbusdriver.com for Modbus libraries and tools.
    [3] => 
    [4] => Protocol configuration: MODBUS/TCP
    [5] => Slave configuration...: address = 1, start reference = 147, count = 1
    [6] => Communication.........: 10.234.6.11, port 502, t/o 1.00 s, poll rate 1000 ms
    [7] => Data type.............: 16-bit register, output (holding) register table
    [8] => 
    [9] => -- Polling slave...
    [10] => [147]: -210
    [11] => modpoll 3.4 - FieldTalk(tm) Modbus(R) Master Simulator
    [12] => Copyright (c) 2002-2013 proconX Pty Ltd
    [13] => Visit http://www.modbusdriver.com for Modbus libraries and tools.
    [14] => 
    [15] => Protocol configuration: MODBUS/TCP
    [16] => Slave configuration...: address = 1, start reference = 148, count = 1
    [17] => Communication.........: 10.234.6.11, port 502, t/o 1.00 s, poll rate 1000 ms
    [18] => Data type.............: 16-bit register, output (holding) register table
    [19] => 
    [20] => -- Polling slave...
    [21] => [148]: -212
)

$matches  = preg_grep ('/^[147] (\w+)/i', $output);
print_r ($matches);
//only returns Array()
4

1 に答える 1

0

[147]を含む文字クラスと見なされるため、左角かっこをエスケープする必要があります147

これは次の方法で実行できます。

$result=preg_grep('~^\[14(?:7|8)]:~',$rgData);
print_r($result);

角かっこをエスケープする (またはエスケープしない) ことについて知りたいことはすべて、ここで見つけることができます。

于 2013-08-08T13:22:25.280 に答える