- 我有一个表格,我想在其中键入任何单词组合,然后提交。
- 假设我输入"巴巴巴巴" 这必须变成"2+1+2+1+2+1+
- 2+1 =12"
- Folloed by: 12 = 1+2 = 3 答案总是必须分解到 10 以下。3是我想看到的唯一答案。
一个完全的初学者,几个星期以来我一直在搞乱$let_arr = ["a" => "1", "b" => "2",];
、str_split
、explode
和其他一切。想不通。
谁能帮我走下去? 也许这些见解会帮助我走得更远。
字母
实际上是数字 - 它们有一个有序的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
?>