Fondamentalement, vous pouvez convertir le javascript entièrement en PHP. Ici, j'ai pu convertir et tester le code de validation d'une adresse ethereum en PHP.
/**
* Checks if the given string is an address
*
* @method isAddress
* @param {String} $address the given HEX adress
* @return {Boolean}
*/
function isAddress($address) {
if (!preg_match('/^(0x)?[0-9a-f]{40}$/i',$address)) {
// check if it has the basic requirements of an address
return false;
} elseif (!preg_match('/^(0x)?[0-9a-f]{40}$/',$address) || preg_match('/^(0x)?[0-9A-F]{40}$/',$address)) {
// If it's all small caps or all all caps, return true
return true;
} else {
// Otherwise check each case
return isChecksumAddress($address);
}
}
/**
* Checks if the given string is a checksummed address
*
* @method isChecksumAddress
* @param {String} $address the given HEX adress
* @return {Boolean}
*/
function isChecksumAddress($address) {
// Check each case
$address = str_replace('0x','',$address);
$addressHash = hash('sha3',strtolower($address));
$addressArray=str_split($address);
$addressHashArray=str_split($addressHash);
for($i = 0; $i < 40; $i++) {
// the nth letter should be uppercase if the nth digit of casemap is 1
if ((intval($addressHashArray[$i], 16) > 7 && strtoupper($addressArray[$i]) !== $addressArray[$i]) || (intval($addressHashArray[$i], 16) <= 7 && strtolower($addressArray[$i]) !== $addressArray[$i])) {
return false;
}
}
return true;
}
Pendant ce temps, pour quelqu'un qui cherche une expression régulière très simple pour vérifier la validité de l'adresse Ethereum (à utiliser est par exemple un attribut pattern d'un champ HTML), cette expression régulière peut suffire.
^(0x)?[0-9a-fA-F]{40}$
Aussi, lisez l'algorithme général (comment est-il vérifié généralement) et l'écrire en PHP –
@RiggsFolly Je ne demande pas la conversion, j'aime apprendre et je le pense un endroit agréable. Je réponds aussi à des questions que tu connais? – btc4cash
Pouvez-vous fournir une réponse constructive sur la validation de ethereum/regex en PHP ou vous venez de vous sentir ici par hasard? – btc4cash