繁体   English   中英

如何从数字中删除数字并将其替换为 PHP 中的字母?

[英]How can I remove digits from a number and replace it with letters in PHP?

考虑$number="1234567890"; 如何获得“gRkBDa7890”的结果前 6 位数字应替换为随机大小写字母,并且只有$number的最后 4 位数字应相同。 $number的值每次都会不同,但总是 10 位数字。 目的是从他们的电话号码为每个用户生成推荐/邀请代码。

你可以试试这个

 $number =  "1122334455667788";
  $masked =  str_pad(substr($number, -4), strlen($number), ' ', STR_PAD_LEFT);
  function generateRandomString($length = 10) {
    return substr(str_shuffle(str_repeat($x='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil($length/strlen($x)) )),1,$length);
  }

  $genco = generateRandomString();
  $reffcode =  $genco.$masked;
  $reffcode = str_replace(' ', '', $reffcode);
  echo trim($reffcode);

并且为了不重复,您应该在数据库中添加所有给定的推荐代码

然后,当您将新的 reff 代码提供给 other 时,您需要检查它是否已注册,如果为 true,则重新生成字符串,如果为 false,则提供生成的字符串

诀窍是首先将电话号码的最后 4 个数字分开,然后创建一个新的 6 个字符长的小写和大写字母随机字符串。 接下来,将两者结合起来。

正如 Glossy Power 所说,您应该根据数据库中的现有代码检查新创建的推荐代码。 这是以 while 循环的形式完成的。 下面的代码将执行此操作。

function referral_code($phone_number){

    // Get last four digits from phone number
    $last_four_digits = substr($phone_number, -4);

    // Set continue to true for looping
    $continue = true;

    // Loop
    while ($continue) {

        // Accepted characters for first part of referral link
        $input = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

        // Initiate variable
        $random_letters = '';

        // Create 6 character random string
        for ($i = 0; $i < 6; $i++) { 

            $random_letters .= $input[rand(0, strlen($input) - 1)]; 

        }

        // Combine new random string with last four digits
        $referral_code = $random_letters.$last_four_digits;

        // Check if the newly created referral code is present in database
        $sql = "SELECT referral_code FROM table WHERE referral_code = '$referral_code' LIMIT 1";
        $result = mysqli_query($connection, $sql);

        // If number of returned rows is zero
        if(mysqli_num_rows($result) == 0) {

            // Set continue to false to stop loop
            $continue = false;

            // Return referral code
            return $referral_code;

        }
    }
}

您可以像这样启动 function:

echo referral_code('0612345678');

这将返回一个 10 个字符的字符串,其中前 6 个字符是随机的小写和大写字母,最后 4 个字符是 5678。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM