我有来自php socket_receive函数的somme数据,它是这样的:
ZC* |000195000000B5D0|0000|PTv1.11|ZE20S|ProBee-ZE ZR |000195000000920A|A4C0|PTv1.11|ZE20S|ProBee-ZE OK
从这个我只需要像这种形式的mac地址:“000195000000B5D0”
我正在尝试使用此代码:
<?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 = explode(“\ r \ n”,$ buf); echo“我收到这样的消息:
现在我只需要从数据库的每一行保存| 000195000000B5D0 |(地址)。我怎么能这样做?
答案 0 :(得分:0)
我用这段代码来回答我的问题
// 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);
} ?&GT;