代码之家  ›  专栏  ›  技术社区  ›  Ali Özen

PHP用str\u replace将数字转换为字符串而不混淆

  •  2
  • Ali Özen  · 技术社区  · 7 年前

    1=>A
    2=>B
    3=>C
    4=>D
    5=>E
    6=>F
    7=>G
    8=>H
    9=>I
    10=>J
    11=>K
    12=>L
    

    function name($string) {
        $find=array("1","2","3","4","5","6","7","8","9","10","11","12");
        $replace=array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L");
        $string=str_replace($find,$replace,$string);  
        return $string;
    }
    

    name("12"); 它不会回来了 L 它的回归 AB .

    实际上这是有道理的。回信。我怎么回去 L 在这个函数中?我该怎么办?提前谢谢。

    6 回复  |  直到 7 年前
        1
  •  2
  •   Mohammad DefenestrationDay    7 年前

    str_replace() with array用数组项中的任何匹配项替换提供的字符串。所以使用 array_search() 如下图所示

    $result = $replace[array_search($string, $find)]; 
    

    所以你的代码改成

    function name($string) {
        $find = array("1","2","3","4","5","6","7","8","9","10","11","12");
        $replace = array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L");  
        return $replace[array_search($string, $find)]; 
    }
    

    签入结果 demo

        2
  •  1
  •   Nigel Ren    7 年前

    问题是 str_replace() documentation ...

    替换订单明白了

    多次替换。另请参见本文档中的示例。

    如果你用 strtr()

    $string=strtr($string, array_combine($find, $replace));
    
        3
  •  1
  •   nice_dev    7 年前

    chr

    <?php 
    
    function name($string) {
       return chr(intval($string) + 64);
    }
    

    更新:

    • ord('A') A 转换为整数的字符串参数,并从中减去1,以获得我们正在查找的字符的ASCII值。 chr()

    function name($string) {
       return chr(intval($string) + ord('A') - 1);
    }
    
        4
  •  0
  •   Ulrich Eckhardt    7 年前

    创建简单映射:

    $mapping = [
        '1' => 'A',
        '2' => 'B',
        '12' => 'L',
    ];
    if (!array_key_exists($string, $mapping)) {
        throw new Exception('invalid input provided');
    }
    return $mapping[$string];
    
        5
  •  0
  •   A l w a y s S u n n y    7 年前

    range() 而不是长时间 键=>价值 数组。我认为你现在的要求 str_repalce() 范围() 会变魔术:)

    <?php
      function name($num){
        $array = range('A','Z');
        $array = array_filter(array_merge(array(0), $array));
        return $array[$num];
      }
    
     echo name(12);
    

    演示: https://3v4l.org/kl9jn

        6
  •  0
  •   Paolo    7 年前

    str_replace chr

    function name($string) {
        return chr( $string + 64 );
    }
    

    请注意,这将是一个长单词 $string 实际上包含一个范围为1的数字。。26


    但如果-出于某种原因-你想坚持 str\u替换

    function name($string) {
        $string = " " . $string . " ";
        $find=array(" 1 "," 2 "," 3 "," 4 "," 5 "," 6 "," 7 "," 8 "," 9 "," 10 "," 11 "," 12 ");
        $replace=array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L");
        $string=str_replace($find,$replace,$string);  
        return $string;
    }
    
    推荐文章