PHP:将单词/字符串转换为数字并将它们相加


PHP: Converting words/strings to numbers and add them up

  1. 我有一个表格,我想在其中键入任何单词组合,然后提交。
  2. 假设我输入"巴巴巴"
  3. 这必须变成"2+1+2+1+2+1+
  4. 2+1 =12"
  5. Folloed by: 12 = 1+2 = 3 答案总是必须分解到 10 以下。3是我想看到的唯一答案。

一个完全的初学者,几个星期以来我一直在搞乱$let_arr = ["a" => "1", "b" => "2",];str_splitexplode和其他一切。想不通。

谁能帮我走下去? 也许这些见解会帮助我走得更远。

字母

实际上是数字 - 它们有一个有序的ASCII值,可以通过ord()检索。例如,ord('a')为 97。因此,您不需要数组作为查找表。

首先,让我们从字符串中删除所有非字母字符并将所有内容转换为小写(自 ord('a') != ord('A') 起):

$str = 'bababa ba';
$letters = preg_replace('~[^a-z]~i', '', $str); // remove all non-alpha characters
$letters = strtolower($letters); // convert to lowercase

现在让我们总结一下单个字母:

$sum = 0;
for ($i = 0; $i < strlen($letters); $i++)
{
    $sum += ord($letters[$i]) - 96; // 96 == ord('a') - 1
}

最后,我们必须得到数字总和:

$ds = 0;
while ($sum != 0)
{
    $ds += $sum % 10;         // extract and add last digit
    $sum = (int) ($sum / 10); // remove last digit
}

现在,$ds将包含您的结果。我希望,这就是你所要求的。

找出 a=1 和 b=2 和 ...这个简单的形式/功能:你可以在这里尝试这个"简单"的代码:http://wistudat.be/try/calcuword.php

<form action="./calcuword.php" onsubmit="" method="post"> 
<b>Enter your word: </b>
<br> 
<input type="text" name="word">
<br> 
<input type="submit" value="SUBMIT">
</form>
<p style="color:red;">
<?php 
$word= filter_var($_POST['word'], FILTER_SANITIZE_STRING);
echo "String : ".$word ." to integer : ";
function CtoI($alfa)
{
$array = array_flip(range(a, z));
return $array[$alfa] + 1;
}
$chars = str_split($word);
foreach($chars as $char){
if($word){
echo CtoI($char);
if ($char === end($chars)){
echo "=";
}
else{
echo "+";
}
} //End if($word)
} //End foreach
?>