php在回车处从socket_receive中分离数据,然后进行管道传输


php split data from socket_receive at carriage return and then pipe

我有一些来自phpsocket_receive函数的数据;It’是这样的:

ZC* |000195000000B5D0|0000|PTv1.11|ZE20S|ProBee-ZE ZR |000195000000920A|A4C0|PTv1.11|ZE20S|ProBee-ZE OK

从这个开始,我只需要像这样的mac地址:"000195000000B5D0"

  • 我想在回车处分解整个消息,''r''n然后在|处再次拆分每一行,并将地址插入数据库行

我正在尝试使用这个代码:

<?php
           $out = socket_recv($socket, $buf, 2048, MSG_WAITALL);
            echo "<br>MESAJ=".$buf;
            $row=preg_split('#('r'n|['|])#', $buf);
            print_r($row);
?>

在以前的桌面应用程序上的vb.net中,我使用了这段代码。

  Private Sub SalveazaData()
          Dim list As String() = rtbComData.Text.Split(Environment.NewLine.ToCharArray())
           For Each Row As String In list
        If Not (Row = "AT+DSCAN=10,2" Or Row = "OK" Or Row = "") Then
            Dim s As String() = Split(Row, "|")
            Dim aRow As smdDataDataSet1.smdTableRow = SmdDataDataSet1.smdTable.NewsmdTableRow()
            aRow.Model = "SCL-50"
            aRow.AdresaUnica = s(1)
            aRow.StatusModul = "ACTIVE"
            Try
                SmdDataDataSet1.SearchAdrese.Rows.Add(s(1))
                SmdDataDataSet1.smdTable.Rows.Add(aRow)
            Catch ex As Exception
                Dim u As String
                u = SmdTableTableAdapter.UpdateInactivActiv()
            End Try
        End If
    Next

End Sub

你能帮我做这个吗?谢谢

  • 数据很长,有数百个地址,但使用此代码可以在回车时拆分''n''r:

    MESAJ FROM=".$buf;$row=爆炸("''r''n",$buf);echo"
    ROW="$行[0];echo"
    ROW="$行[1];?>

    我得到这样的信息:

    1. ROW=ZC*|000195000000B5D0|0000|PTv1.11|ZE20S|ProBee ZE
    2. ROW=ZR|000195000000920A|A4C0|PTv1.11|ZE20S|ProBee ZE

    现在我只需要保存数据库中每一行的|000195000000B5D0|(地址)。我该怎么做?

我用这个代码回答我的问题

// connect to server
$result = socket_connect($socket, $host, $port) or die("Could not connect to IP'n");
//send data to connected socket
 socket_write($socket, $message, strlen($message)) or die("Could not send data to server'n");
 echo "<br>MESAJ TO :".$message;
 // get server response
$out='';
socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array("sec"=>10, "usec"=>0));

    $out = socket_recv($socket, $buf, 2048, MSG_WAITALL);
    echo "<br>MESAJ FROM=".$buf;
    $row=explode("'r'n", $buf);
    echo "<br>ROW=".$row[0];
    echo "<br>ROW=".$row[1];
    foreach ($row as &$s) {
        $s = explode("|",$s);
    echo $s[0];
    echo $s[1];
    echo $s[2];
    $adresaUnica=$s[1];
        if(mysql_query("INSERT INTO `griddata`(`adresaUnica`, `status`, `model`) VALUES ('$adresaUnica','Activ','SCL-50')"))
{
}
            }

    socket_close($socket);

}?>