我需要一种php中的方法来检查字符串是否是一个有效的litecoin地址。它不需要检查litecoin地址是否实际存在,但它没有无效(长度错误、非十六进制字符等等)。
发布于 2014-05-09 17:09:20
一种可能的方法是使用正则表达式,网上有几种可用的,下面使用的方法来自regexlib.com
// the regular expression
$pattern = '/^L[a-zA-Z0-9]{26,33}$/';
// should fail
$subject = "1EEVBLgg4h4TTLv76QiQ1Thcvvk3Be7VPV";
echo $subject . ' matches? ' . (preg_match($pattern, $subject) == 0 ? 'nope' : 'yup') . "\n";
// should pass
$subject = "Lg6GPVfPsmPAbTWYuKBQXtdGnBuCWcxHcr";
echo $subject . ' matches? ' . (preg_match($pattern, $subject) == 0 ? 'nope' : 'yup') . "\n";该正则表达式是接近的,但并不完全正确,因为它允许所有alpha &0通过,下面的一个更严格:
// the improved regular expression
$pattern = '/^L[a-km-zA-HJ-NP-Z1-9]{26,33}$/';排除为优化可读性而从Base58Check中排除的Base58Check。
发布于 2014-05-09 16:58:14
您可以使用JSON RPC。
像这样的事情应该有效:
$valid = $ltc->validateaddress($address);
if($valid['isvalid'] == "true") {
echo "Valid address";
}
else {
echo "Invalid address";
}如果这还不够,那么我保证这个问题已经在其他地方解决了,您可能只需要在搜索引擎中找到正确的关键字。
发布于 2018-10-23 14:58:14
@yuya regex完全覆盖了litecoin的主网络地址。
但是,如果您也想包括testnet地址,那么:
/^[LM3Q2mn][a-km-zA-HJ-NP-Z1-9]{26,34}$/
这还包括:
m或n开头2 (旧)和Q (新)开头。https://stackoverflow.com/questions/23570080
复制相似问题