如何为我的功能写一个测试用例?PHP


How to write a test case for my function? PHP

我需要为这个函数写一个测试用例,但我似乎不能正确地得到它。如果这意味着什么,我正在我的本地机器上测试。

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;

正如其他人指出的那样,你们的str_replace, preg_replacereturn似乎有问题。

遍历过滤器:

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

然后用空白字符串替换未定位的

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

然后返回字符串:

return $a;

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

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;