我面临着一个想法的轻微问题。
我在所有计算设备上的在线论坛中使用聊天功能。我也动摇地使用它,这会导致格式化,输入等方面的轻微问题。我有想法将所有聊天从中继帐户转发到我自己的移动友好站点。
我还没有开始发送消息,虽然我知道如何阅读消息。如何输出它们是个问题。
当我聊天使用ajax时,我在计算机上嗅出了传出的数据包。然后我找到了以下网址:http://server05.ips-chat-service.com/get.php?room=xxxx&user=xxxx&access_key=xxxx
页面输出与此类似的内容:~~||~~1419344231,1,kondaxdesign,Could somebody send a quick message for me__C__ please?,,10248~~||~~1419344237,1,tom.bridges,its a iso and a vm what more do we need to know?,,10880~~||~~
该字符串会在聊天中输出:http://i.stack.imgur.com/j7CM6.png
遗憾的是,我对正则表达式或任何其他可能会分裂它的函数知之甚少。是否有人能够协助我获得1)。姓名,2)。聊天数据和3)。时间戳?
如您所见,字符串是这样的:~~||~~[timestamp],1,[name],[data],,[some integer]~~||~~
干杯。
在阅读完字符串输出后,当有人离开聊天时,会发送:~~||~~1419344521,2,wegface,TIMEOUT,2_10828,0~~||~~
日志的开头以1,224442
之前的~~||~~
开头。
答案 0 :(得分:1)
您首先explode
每个记录,然后使用str_getcsv
读取字符串并根据需要解析它。这是一个执行该操作的脚本,在输出上没有任何格式化,并且我已将变量命名为OP中描述它们的名称。
我不会使用正则表达式来解析字符串,因为更好的功能可用(上面链接)
$string = "~~||~~1419344231,1,kondaxdesign,Could somebody send a quick message for me__C__ please?,,10248~~||~~1419344237,1,tom.bridges,its a iso and a vm what more do we need to know?,,10880~~||~~";
//Split so we have each chat record to loop around
foreach( explode("~~||~~", $string) as $segments) {
//Read the CSV properly
$chat = str_getcsv($segments);
if( count($chat) <> 6 ) { continue; } //Skip any that don't have all the data
$timestamp = $chat[0];
$name = $chat[2];
$data = $chat[3];
$some_integer = $chat[5];
echo $name .' said - '. $data .'<br />';
}