代码之家  ›  专栏  ›  技术社区  ›  Sodapop Curtis

如何为我的函数编写测试用例?PHP文件

  •  2
  • Sodapop Curtis  · 技术社区  · 10 年前

    我需要为这个函数编写一个测试用例,但我似乎无法正确地得到它。我正在本地机器上测试这是否意味着什么。

    function cleanEncoding($a)
    // Replace specified foreign character with equivalent english character
    { $filter = ['"' => '"',
           '"' => '"',
           '&' => '&',
           '&' => '&',
           '&#60;' => '<',
           '&#lt;' => '<',
           '&#62;' => '>',
           '&#gt;' => '>',
           '&#160;' => ' ',
    
           '&#224;' => 'a',
           '&#225;' => 'a',
           '&#226;' => 'a',
           '&#227;' => 'a',
           '&#228;' => 'a',
           '&#229;' => 'a',
           '&#230;' => 'a',
           '&#231;' => 'c',
           '&#232;' => 'e',
           '&#233;' => 'e',
           '&#234;' => 'e',
           '&#235;' => 'e',
           '&#236;' => 'i',
           '&#237;' => 'i',
           '&#238;' => 'i',
           '&#239;' => 'i',
           '&#241;' => 'n',
           '&#240;' => 'o',
           '&#242;' => 'o',
           '&#243;' => 'o',
           '&#244;' => 'o',
           '&#245;' => 'o',
           '&#246;' => 'o',
           '&#248;' => 'o',
           '&#249;' => 'u',
           '&#250;' => 'u',
           '&#251;' => 'u',
           '&#252;' => 'u',
           '&#253;' => 'y',
           '&#255;' => 'y',
           '&#339;' => 'oe',
           '&#353;' => 's',
    
           '&#192;' => 'A',
           '&#193;' => 'A',
           '&#194;' => 'A',
           '&#195;' => 'A',
           '&#196;' => 'A',
           '&#197;' => 'A',
           '&#198;' => 'A',
           '&#199;' => 'C',
           '&#200;' => 'E',
           '&#201;' => 'E',
           '&#202;' => 'E',
           '&#203;' => 'E',
           '&#204;' => 'I',
           '&#205;' => 'I',
           '&#206;' => 'I',
           '&#207;' => 'I',
           '&#209;' => 'N',
           '&#210;' => 'O',
           '&#211;' => 'O',
           '&#212;' => 'O',
           '&#213;' => 'O',
           '&#214;' => 'O',
           '&#216;' => 'O',
           '&#217;' => 'U',
           '&#218;' => 'U',
           '&#219;' => 'U',
           '&#220;' => 'U',
           '&#221;' => 'Y',
           '&#376;' => 'Y',
           '&#338;' => 'OE',
           '&#352;' => 'S',];
    // replace foreign character with equivalent english character
    foreach ($filter as $b => $c) {
    $d = str_replace($b, $c, $a);
    }
    // deletes foreign character that was not found
    $d = preg_replace(("/&#[0-9]*;/","",$a);
    return ($a);
    }
    

    这是我的测试代码。它打印出来了,但仍然是外国字符。我需要用英文字符打印。

    $a = 'H&#234;ll&#248; W&#244;rld!&#36;';
    $e = cleanEncoding($a);
    echo $e;
    
    2 回复  |  直到 10 年前
        1
  •  1
  •   camelCase    10 年前

    正如其他人指出的 str_replace , preg_replace return 似乎有问题。

    在过滤器上循环:

    foreach ($filter as $key => $value) {
        $a = str_replace($key, $value, $a);
    }
    

    然后用空白字符串替换任何未找到的字符串:

    $a = preg_replace("/&#[0-9]*;/","", $a);

    然后返回该字符串:

    return $a;

        2
  •  0
  •   Rodney Salcedo    10 年前

    试试看,你的代码有一些语法错误

    function cleanEncoding($a){
    // Replace specified foreign character with equivalent english character
     $filter = Array('&#34;' => '"',
    '&quot;' => '"',
    '&#38;' => '&',
    '&#38;' => '&',
    '&#60;' => '<',
    '&#lt;' => '<',
    '&#62;' => '>',
    '&#gt;' => '>',
    '&#160;' => ' ',
    
    '&#224;' => 'a',
    '&#225;' => 'a',
    '&#226;' => 'a',
    '&#227;' => 'a',
    '&#228;' => 'a',
    '&#229;' => 'a',
    '&#230;' => 'a',
    '&#231;' => 'c',
    '&#232;' => 'e',
    '&#233;' => 'e',
    '&#234;' => 'e',
    '&#235;' => 'e',
    '&#236;' => 'i',
    '&#237;' => 'i',
    '&#238;' => 'i',
    '&#239;' => 'i',
    '&#241;' => 'n',
    '&#240;' => 'o',
    '&#242;' => 'o',
    '&#243;' => 'o',
    '&#244;' => 'o',
    '&#245;' => 'o',
    '&#246;' => 'o',
    '&#248;' => 'o',
    '&#249;' => 'u',
    '&#250;' => 'u',
    '&#251;' => 'u',
    '&#252;' => 'u',
    '&#253;' => 'y',
    '&#255;' => 'y',
    '&#339;' => 'oe',
    '&#353;' => 's',
    
    '&#192;' => 'A',
    '&#193;' => 'A',
    '&#194;' => 'A',
    '&#195;' => 'A',
    '&#196;' => 'A',
    '&#197;' => 'A',
    '&#198;' => 'A',
    '&#199;' => 'C',
    '&#200;' => 'E',
    '&#201;' => 'E',
    '&#202;' => 'E',
    '&#203;' => 'E',
    '&#204;' => 'I',
    '&#205;' => 'I',
    '&#206;' => 'I',
    '&#207;' => 'I',
    '&#209;' => 'N',
    '&#210;' => 'O',
    '&#211;' => 'O',
    '&#212;' => 'O',
    '&#213;' => 'O',
    '&#214;' => 'O',
    '&#216;' => 'O',
    '&#217;' => 'U',
    '&#218;' => 'U',
    '&#219;' => 'U',
    '&#220;' => 'U',
    '&#221;' => 'Y',
    '&#376;' => 'Y',
    '&#338;' => 'OE',
    '&#352;' => 'S');
    // replace foreign character with equivalent english character
    $d=$a;
    foreach ($filter as $b => $c) {
        $d = str_replace($b, $c, $d);
    }
    // deletes foreign character that was not found
    $d = preg_replace("/&#[0-9]*;/","",$d);
    return ($d);
    }
    $a = 'H&#234;ll&#248; W&#244;rld!&#36;';
    $e = cleanEncoding($a);
    echo $e;