[英]Decode PDU encoded SMS in PHP
我已经在网上搜索了很长一段时间-但没有任何可用的方法:(
您知道使用PHP解码PDU编码的SMS的类/库吗?
使用官方文档手动进行所有解码会让我有些吃惊。
似乎有一些库可用于Java(Android),但这无济于事。
这是一个基于JavaScript的GUI 。 将您的pdu消息粘贴到单击“转换”按钮的中间框中。
我基于python的 PHP解决方案:
<?php
/**
* Decode 7-bit packed PDU messages
*/
if ( !function_exists( 'hex2bin' ) ) {
// pre 5.4 fallback
function hex2bin( $str ) {
$sbin = "";
$len = strlen( $str );
for ( $i = 0; $i < $len; $i += 2 ) {
$sbin .= pack( "H*", substr( $str, $i, 2 ) );
}
return $sbin;
}
}
function pdu2str($pdu) {
// chop and store bytes
$number = 0;
$bitcount = 0;
$output = '';
while (strlen($pdu)>1) {
$byte = ord(hex2bin(substr($pdu,0,2)));
$pdu=substr($pdu, 2);
$number += ($byte << $bitcount);
$bitcount++ ;
$output .= chr($number & 0x7F);
$number >>= 7;
if (7 == $bitcount) {
// save extra char
$output .= chr($number);
$bitcount = $number = 0;
}
}
return $output;
}
?>
function DecodePDU($sString = '')
{
$sString = pack("H*",$sString);
$sString = mb_convert_encoding($sString,'UTF-8','UCS-2');
return $sString;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.