Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 帮助替换字符_Php - Fatal编程技术网

Php 帮助替换字符

Php 帮助替换字符,php,Php,希望有人能帮上忙 我正在尝试编写一个函数来替换特殊字符并返回正确的字符 这就是我到目前为止所做的: function convertlatin($output){ $latinchar = array("€", "‚","Æ'","„","…","‡","ˆ","‰","Å","‹","Å'",'Ž','‘','’','“','â€','•','â€"','â€"','Ëœ','â"¢','Å¡','›','Å"',"ž",'Ÿ

希望有人能帮上忙

我正在尝试编写一个函数来替换特殊字符并返回正确的字符

这就是我到目前为止所做的:

function convertlatin($output){ 

    $latinchar = array("€", "‚","Æ'","„","…","‡","ˆ","‰","Å","‹","Å'",'Ž','‘','’','“','â€','•','â€"','â€"','Ëœ','â"¢','Å¡','›','Å"',"ž",'Ÿ','¡','¢','£','¤','Â¥','¦','§','¨','©','ª','«','¬','®','¯','°','±','²','³','´','µ','¶','·','¸','¹','º','»','¼',"½",'¾','¿','À','Ã','Â','Ã','Ã"','Ã…','Æ','Ç','È','É','Ê','Ë','ÃŒ    ','Ã','ÃŽ','ß','Ã',"Ã'","Ã'",'Ã"','Ã"','Õ','Ö','×','Ø','Ù','Ú','Û','Ãœ','Ã','Þ','ß','Ã','á','â','ã','ä','Ã¥','æ','ç','è','é','ê','ë','ì','Ã','î','ï','ð','ñ','ò','ó','ô','õ','ö','÷','ø','ù','ú','û','ü','ý',"þ","ÿ");
    $correctchar = array("€", "‚","ƒ",'"','…','‡','ˆ','‰',"Š",'‹','Œ','Ž',"'","'",'"','"','•','–','—','˜','™','š','›','œ','ž','Ÿ','¡','¢','£','¤','¥','¦','§','¨','©','ª','«','¬','®','¯','°','±','²','³','´','µ','¶','·','¸','¹','º','»','¼','½','¾','¿','À','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö','×','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß','à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô','õ','ö','÷','ø','ù','ú','û','ü','ý','þ',"ÿ");

    $returnval = str_replace($latinchar, $correctchar, $output);

    echo($returnval);
    return $returnval;
}
我遇到的问题是,我认为它在工作,但它有随机结果,例如,如果它只在其中一个字符上找到匹配项,它将替换该数组中的另一个字符。我想做的是在提供的字符串中查找并替换拉丁字符的精确匹配,例如“testingÃÿ”与“testingÿ”—在mo中,它将Ãÿ替换为testingÿÿ

它似乎只是在某些情况下替换了一个字符,我希望它匹配并替换两个参数

我也尝试过strcmp,但没有多大成功


有什么想法吗?

看起来你的问题不是字符错误,而是编码错误。也许您最好尝试更改$output的编码。utf8_编码对您没有帮助,“错误”字符看起来像一些错误转换的Windows-1252-input

尝试:


看起来你的问题不是字符错误,而是编码错误。也许您最好尝试更改$output的编码。utf8_编码对您没有帮助,“错误”字符看起来像一些错误转换的Windows-1252-input

尝试:


代码没有任何错误-它应该正常工作。能给我们举一些“边缘案例”的例子吗。在这里,它是“变成”而不是“一些确实有用”,但它似乎是“的出现”,特别是它只是转换一个字符而不是两个字符。我假设它首先遇到了Ã并进行了改变?谢谢你的评论,我试着用标题、htmlentities和utf8_编码来改变编码,但它们似乎都不起作用。更广泛的问题实际上是编码。我继承了一个定制的CMS系统,该系统存在广泛的编码问题,希望这是一种解决方法。代码没有任何错误-它应该正常工作。能给我们举一些“边缘案例”的例子吗。在这里,它是“变成”而不是“一些确实有用”,但它似乎是“的出现”,特别是它只是转换一个字符而不是两个字符。我假设它首先遇到了Ã并进行了改变?谢谢你的评论,我试着用标题、htmlentities和utf8_编码来改变编码,但它们似乎都不起作用。更广泛的问题实际上是编码。我继承了一个定制的CMS系统,该系统存在广泛的编码问题,希望这是一种解决方法。
echo mb_convert_encoding('testingÿ','CP1252','UTF-8');