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

如何为我的函数编写测试用例?PHP,php,regex,foreach,preg-replace,str-replace,Php,Regex,Foreach,Preg Replace,Str Replace,我需要为这个函数编写一个测试用例,但我似乎无法正确地得到它。我正在测试我的本地机器,如果这意味着什么 function cleanEncoding($a) // Replace specified foreign character with equivalent english character { $filter = ['"' => '"', '"' => '"', '&' => '&'

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

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);
}

正如其他人指出的,您的
str\u replace
preg\u replace
return
似乎有问题

在过滤器上迭代:

foreach ($filter as $key => $value) {
    $a = str_replace($key, $value, $a);
}
然后用空白字符串替换未找到的任何字符串:

$a=preg#u replace(“/&#[0-9]*;/”,“”,$a)

然后返回该字符串:


返回$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;
函数清除编码($a){
//将指定的外来字符替换为等效的英文字符
$filter=Array('";'=>''”,
'"' => '"',
'&' => '&',
'&' => '&',
'<' => '',
“&#gt;”=>“>”,
' ' => ' ',
"a",,
"a",,
"a",,
"a",,
"a",,
“å;”=>“a”,
"a",,
"c",,
“è;”=>“e”,
“é;”=>e”,
“ê;”=>“e”,
“ë;”=>“e”,
“ì;”=>“我”,
“í;”=>“我”,
“î;”=>“我”,
“ï;”=>“我”,
“ñ;”=>“n”,
“ð;”=>“o”,
“ò;”=>o,
“ó;”=>o”,
“ô;”=>“o”,
“õ;”=>“o”,
“ö;”=>o”,
“ø;”=>o,
“ù;”=>“u”,
“ú;”=>“u”,
“û;”=>“u”,
“ü;”=>“u”,
“ý;”=>y,
“ÿ;”=>y,
“œ;”=>“oe”,
“š;”=>“s”,
“À;”=>“A”,
"A",,
"A",,
“Ã;”=>A,
"A",,
"A",,
"A",,
"C",,
“È;”=>E,
“É;”=>“E”,
“Ê;”=>“E”,
“Ë;”=>E,
“Ì;”=>“我”,
“Í;”=>“我”,
“Î;”=>“我”,
“Ï;”=>“我”,
“Ñ;”=>N”,
“Ò;”=>O”,
“Ó;”=>O,
“Ô;”=>O”,
“Õ;”=>O”,
“Ö;”=>O”,
“Ø;”=>O”,
“Ù;”=>“U”,
“Ú;”=>“U”,
“Û;”=>“U”,
“Ü;”=>“U”,
“Ý;”=>Y,
“Ÿ;”=>“Y”,
“Œ;”=>“OE”,
"S",;
//将外来字符替换为等效的英文字符
$d=$a;
foreach($b=>c的过滤器){
$d=str_替换($b,$c,$d);
}
//删除未找到的外来字符
$d=预替换(“/&#[0-9]*;/”,“”,$d);
回报(d美元);
}
$a='Hê;llø;Wô;rld!$;';
$e=清洁编码($a);
echo$e;

您在$d中替换外来字符,但返回$a。难怪外来字符仍然存在。而且您需要在
$d
上执行
str\u replace
而不是
$a
。是的,他执行str\u replace和preg\u replace操作。
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;