この計算機は、Webページのテキストボックスにスペースを含む入力(「2 + 2」など)を入力し、その上に回答をエコーすることになっています。現在、出力は「0」であるか、入力から乱数を切り取っているように見えます。
問題はsubstr関数内にあると95%確信しています-正しい値が割り当てられていません。これは、出力動作のための私の推測です。実証するために、
1+1意志=02+2意志=0... 9+9意志=010+10意志=120+20意志=2
注: 16行目から始まる$ firstNumber、$ secondNumber、および$operatorの初期宣言値は任意です。
PHPマニュアルのsubstr(、) の例を次に示します。
echo substr('abcdef', 1); // bcdef <br>
echo substr('abcdef', 1, 3); // bcd<br>
echo substr('abcdef', 0, 4); // abcd<br>
echo substr('abcdef', 0, 8); // abcdef<br>
echo substr('abcdef', -1, 1); // f<br>
。
//'if' is executed when submit is pressed
if (isset($_POST['test']))
{
$input = $_POST['test'];
$answer = calculate($input);
echo $answer;
}
//does string processing and number calculation
function calculate($input)
{
//declarations (random)
$firstNumber = 20;
$secondNumber = 30;
$operator = "+";
$answer = 7;
//string processing.
for($i = 0; $i <= strlen($input); $i++)
{
//if current position of the string scan is an operator,
if( trim(substr($input, $i, $i + 1), " ") == "+" ||trim(substr($input, $i, $i + 1), " ") == "-"
||trim(substr($input, $i, $i + 1), " ") == "*" ||trim(substr($input, $i, $i + 1), " ") == "/")
{
//then
//$operator = current position TO current position + 1
$operator = substr($input, $i, $i + 1);
//trim $operator
$operator = trim($operator, " ");
//$firstNumber = 0 TO current position - 1
$firstNumber = substr($input, 0, $i - 1);
//trim $operator
$firstNumber = trim($firstNumber, " ");
//$secondNumber = current position + 1 TO end of string
$secondNumber = substr($input, $i + 1, strlen($input));
//trim $operator
$secondNumber = trim($secondNumber, " ");
}
}
//if operator is ... then do that operation.
//example: if "+", then add $firstNumber and $secondNumber
if($operator == "+")
{
$answer = $firstNumber + $secondNumber;
}
else if($operator == "-")
{
$answer = $firstNumber - $secondNumber;
}
else if($operator == "*")
{
$answer = $firstNumber * $secondNumber;
}
else if($operator == "/")
{
$answer = $firstNumber / $secondNumber;
}
//return the calculated answer for echo
return $answer;
}
?>
<form action="test.php" method="POST">
<textarea name="test" rows="3" cols="30"></textarea>
<input type="submit" value="calculate!">
</form>