寻找任何帮助,我对编码非常陌生并且正在努力寻找帮助。我正在尝试编写一个程序,要求用户输入10位数的ISBN。我需要检查它的所有数字并且是十位数。然后我需要通过将每个数字乘以其末尾的位置来确保其有效的ISBN,得到所有的总数并除以11.我试图一步一步地做,即输入指令,测试,输入下一个当我知道这是最好的方法时,我被告知。我没有得到阵列的数学测试,因为我不知道如何去做,但是,即使我输入十位数,我也被提示输入十个数字。< / p>
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<h4>Enter a ten digit number</h4>
<?php
if(empty($_POST['isbn'])){
echo "Please enter a ten digit number";
} elseif (strlen($_POST['submit'] !==10)){
echo "Please enter exactly ten digits";
} else {
echo "You have entered the correct number of digits";
$array = str_split($_POST['submit']);
}
?>
<form action="Qu2.php" method="post">
ISBN: <input type="number" name="isbn">
<input type="submit" name="submit" value="Go">
</form>
</body>
</html>
答案 0 :(得分:0)
您可以使用ctype_digit()
检查字符串中的所有字符是否都是数字。
要检查给定字符串是否有效ISBN-10,您可以使用以下功能。
function isIsbn10($isbn) {
$check = 0;
for ($i = 0; $i < 10; $i++) {
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ loops through all numbers in the "ISBN"
$check += (int)$isbn[$i] * (10 - $i);
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ multiplies the number with the position from the last character
}
return (0 === ($check % 11)) ? true : false;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ checks if total is divisible by 11
}
var_dump(isIsbn10("0198526636")); // bool(true)
您的代码将如下所示(修复了代码中的一些错误):
if (isset($_POST['submit'])) {
if(empty($_POST['isbn'])){
echo "Please enter a ten digit number";
} elseif (strlen($_POST['isbn']) !== 10) {
echo "Please enter exactly ten digits";
} elseif (!ctype_digit($_POST['isbn'])) {
echo "You have nonnumerical characters in your ISBN!";
} elseif (!isIsbn10($_POST['isbn'])) {
echo "ISBN is invalid!";
} else {
echo "ISBN is VALID!";
}
}