我需要在php中检查字符串是否是有效的litecoin地址。它不需要检查litecoin地址是否确实存在,但它不是无效的(错误的长度,非十六进制字符等......)。
答案 0 :(得分:6)
Litecoin地址以L或M或3开头,因此Regex应低于
$pattern = '/^[LM3][a-km-zA-HJ-NP-Z1-9]{26,33}$/';
答案 1 :(得分:2)
您可以使用JSON RPC。
这样的事情应该有效:
$valid = $ltc->validateaddress($address);
if($valid['isvalid'] == "true") {
echo "Valid address";
}
else {
echo "Invalid address";
}
如果这还不够,那么我保证在其他地方已经解决了这个问题,您可能只需要在搜索引擎中使用正确的关键字。
答案 2 :(得分:2)
一种可能的方法是使用正则表达式,有几种在线可用,下面使用的是[{3}}
// 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中排除的0OIl
以获得最佳可读性。
答案 3 :(得分:0)
@ yuya-ogawa regex完全涵盖了litecoin的主网地址。
如果您还想包括测试网地址:
/^[LM3Q2mn][a-km-zA-HJ-NP-Z1-9]{26,34}$/
这还包括:
m
或n
开头的p2pkh地址2
(旧)和Q
(新)开头的p2sh地址。答案 4 :(得分:0)