【问题标题】:How can I convert words to numbers in PHP?如何在 PHP 中将单词转换为数字?
【发布时间】:2010-06-19 06:54:06
【问题描述】:

首先想到的方法是读取每个字符并将其转换为其 ASCII 值。有没有其他方法可以做到这一点?我希望能够给 php 脚本一个字符串,并让它每次都将相同的字符串(可能包含也可能不包含数字或符号)转换为相同的数字序列。

【问题讨论】:

  • 它是否也必须倒退(数字到字符串)?
  • 不。一旦得到字符串,它将字符串转换为数字并开始使用该数字作为一种“id”。
  • 方法做什么?你能更具体地回答你的问题吗? ASCII 值方法有什么问题?为什么你需要这种转换呢?我是你真的不需要它,只是从错误的假设中想要它?

标签: php string random


【解决方案1】:

所以,您说的是 散列。
MD5() 或(或一些当地偏执狂坚持认为的 sha1())可以给你这个数字。虽然是十六进制的。我希望它符合你不明确的目标。

【讨论】:

  • 我同意 - 听起来确实需要哈希值。如有必要,可以将 raw_output 标志添加到 MD5 或 SHAx 函数以提供二进制输出而不是十六进制。
【解决方案2】:

这会起作用(但我不确定我是否完全掌握了你想要做什么):

function string2num($in_str) {
    $out_str = '';
    $chars = unpack('c*', $in_str);

    foreach($chars as $char) {
        $out_str .= $char;
    }

    return $out_str;
}

// Outputs:
// 8410410511532105115329732115116114105110103

$num = string2num('This is a string');
print "$num\n";

【讨论】:

  • 归结为这种方法或 md5 散列,但我决定使用散列,因为它始终具有特定长度(32 个字符)。我以前没有考虑过散列,因为我通常将它与文件而不是文本字符串相关联(尽管当你开始使用它时,这就是文件的全部内容)。最初我希望它只是数字,但我认为这并不重要。
【解决方案3】:

也许你想了解type casting and juggling

【讨论】:

  • 我已经阅读了该页面。这不是我要找的。例如,我想给 PHP 值“clock”,并让它在每次获得该值时将其转换为“83653”之类的数字。
  • 啊,现在明白你的问题了。是的,接受的答案似乎是正确的方法。
【解决方案4】:

你能为这个函数提供一些界限吗?它需要做分数或小数吗?还是小于零的数字?它需要走多高?只有英文吗?

【讨论】:

  • 必须是大于零的整数。唯一需要转换的字符是可以通过单次击键输入的字符。
  • 哦,我以为你想将“一”转换为 1,“二”转换为 2,依此类推。是的,你想要散列(正如这里的其他人所说)。散列会给你一个巨大的数字,这可能不是你想要的。
猜你喜欢
  • 2010-11-07
  • 1970-01-01
  • 1970-01-01
  • 2012-03-05
  • 2010-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多