如何在php中替换latin1字符串中的特殊字符?

piah890a  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(311)

我有一个问题,当我试图取代特殊字符,如“ñ" “n”或“n”ç" “c”或“c”ü" 例如用“u”在php中从字符串拉丁1编码。
我从mysql检索,它是utf-8编码的字符串“iba”ñ艾兹·里贝拉,阿尔巴“我想替换”ñ" 由“n”得到“ibanez ribera,alba”,但我有几个问题。
如果我用str\u替换它不起作用,如果我用 iconv('UTF-8', 'ISO-8859-1//TRANSLIT//IGNORE', "IBAÑEZ RIBERA, ALBA") 我得到的是“ibaez ribera,alba”,这里的“char”ñ" 被删除,而不是替换为“n”我喜欢它。
那么,我该怎么做这个替换呢?
编辑一:
我注意到,如果我在mysql workbench中用mysql函数替换chars,使用以下查询:

select id, id_player, name, replace(replace(replace(replace(name, " ", "-"), ",", " "), " ", ""), 'Ñ', 'N') as urlName 
from tbl003_player p, (select id_player from tbl006_player_club where id = 188) pc where 
p.id = pc.id_player;

我在字段“urlname”中得到了我想要的结果!!!

但是,当我试图用php从我得到的查询中检索这些数据时:
“国际律师协会ñ“里贝拉阿尔巴”
发生什么事了?

f4t66c6m

f4t66c6m1#

试试这个:

<?php

$string = 'IBAÑEZ RIBERA, ALBA, á â à å ä ð é ê è ë í î ì ï ó ô ò ø õ ö ú û ù ü æ ç ß abc ABC 123';

$value = iconv('UTF-8','ASCII//TRANSLIT',$string);

echo $value;
?>

将生成输出:

IBANEZ RIBERA, ALBA, a a a a a d e e e e i i i i o o o o o o u u u u ae c ss abc ABC 123

更新:
由于我在回答或评论中的建议都不起作用,请使用以下命令:

<?php

$string = 'IBAÑEZ RIBERA, ALBA'; 

function changeChar($string){

$chars = array(
    'À'=>'A','Á'=>'A','Â'=>'A','Ã'=>'A','Ä'=>'A','Å'=>'A',
    'Æ'=>'A','Ç'=>'C','È'=>'E','É'=>'E','Ê'=>'E','Ë'=>'E',
    'Ì'=>'I','Í'=>'I','Î'=>'I','Ï'=>'I','Ð'=>'Dj','Ñ'=>'N',
    'Ò'=>'O','Ó'=>'O','Ô'=>'O','Õ'=>'O','Ö'=>'O','Ø'=>'O',
    'Ù'=>'U','Ú'=>'U','Û'=>'U','Ü'=>'U','Ý'=>'Y','Þ'=>'B',
    'ß'=>'Ss','à'=>'a','á'=>'a','â'=>'a','ã'=>'a','ä'=>'a',
    'å'=>'a','æ'=>'a','ç'=>'c','è'=>'e','é'=>'e','ê'=>'e',
    'ë'=>'e','ì'=>'i','í'=>'i','î'=>'i','ï'=>'i','ð'=>'o',
    'ñ'=>'n','ò'=>'o','ó'=>'o','ô'=>'o','õ'=>'o','ö'=>'o',
    'ø'=>'o','ù'=>'u','ú'=>'u','û'=>'u','ü'=>'u','ý'=>'y',
    'þ'=>'b','ÿ'=>'y','Ă'=>'A','ă'=>'a','Ń'=>'N','ń'=>'n',
    'Š'=>'S','š'=>'s','Ž'=>'Z','ž'=>'z','ƒ'=>'f','Ș'=>'S',
    'ș'=>'s','Ț'=>'T','ț'=>'t',
);
    return strtr($string, $chars);
    //or return str_replace(array_keys($chars), array_values($chars), $string);
}

echo changeChar($string);

它不漂亮,但在大多数情况下都能用。

相关问题