如何将此PHP代码复制到Javascript中?它需要一个像2-9999(序列号)的数字并将其转换为NUMBER ...转换后,2-999将是一个不同的值。
function esn_to_num($esn)
{
if (($tmp = explode('-', $esn))) {
if (sizeof($tmp) == 2
&& my_isnum($tmp[0])
&& my_isnum($tmp[1])
) {
$esn = (($tmp[0] << 23) | $tmp[1]);
} else {
$esn = -1;
}
} else {
$esn = -1;
}
return $esn;
}
我在
下面添加了一个依赖函数// dependency function
/*****************************************************************************
* CHECKS IF A STRING REPRESENTS A NUMBER
******************************************************************************/
function my_isnum($str, $negative=false, $decimal=false)
{
$has_decimal = false;
$len = strlen($str);
if ($len > 0) {
$valid = true;
for ($i=0; $valid && $i<$len; $i++) {
if (!($str[$i] >= '0' && $str[$i] <= '9')) {
if ($str[$i] == '-') {
if (!$negative || $i != 0) {
$valid = false;
}
} else if ($str[$i] == '.') {
if (!$decimal || $has_decimal) {
$valid = false;
}
} else {
$valid = false;
}
}
}
} else {
$valid = false;
}
return $valid;
}
答案 0 :(得分:1)
php语法非常类似于JS。
只需获取变量并移除$
,然后使用var
关键字对其进行声明。
function esn_to_num(esn) {
var tmp = [];
if ((tmp = explode('-', $esn))) {
if (sizeof(tmp) == 2
&& my_isnum(tmp[0])
&& my_isnum(tmp[1])
) {
esn = ((tmp[0] << 23) | tmp[1]);
} else {
esn = -1;
}
} else {
esn = -1;
}
return esn;
}
然后你需要用等效的JS替换所有的php函数。查找“{j}等同于explode
,sizeof
。
按照相同的过程在javascript中重写my_isnum
(显然不是本机的php函数)。
编辑:在看到您的更新后,我意识到Stack Overflow(或其他地方)可能已经存在很多代码,这将是my_isnum
所做的。搜索“js函数以确定字符串是否为数字”或在此处单独询问。
你可以在chromes javascript控制台中完成所有这些,并继续迭代直到你不再收到错误。如果你遇到一个特定的问题并且卡住了,那么在Stack Overflow上提出这个问题就好了。