替换外来字符

时间:2010-12-08 15:40:22

标签: php

在将值存储到数据库之前,我需要能够用英语等价替换一些常见的外来字符。

例如:æ替换为 ae ñ替换为 n

我是否使用preg_replace?

由于

4 个答案:

答案 0 :(得分:6)

对于重音的单个字符

$str = strtr($str, 
  "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÝßàáâãäåçèéêëìíîïñòóôõöøùúûüýÿ",
  "AAAAAACEEEEIIIINOOOOOOYSaaaaaaceeeeiiiinoooooouuuuyy"); 

对于double character重音(例如Æ, æ

$match   = array('æ', 'Æ');
$replace = array('ae', 'AE');
$str = str_replace($replace, $replace, $str);

答案 1 :(得分:5)

您可以使用ASCII//TRANSLIT

尝试iconv()
$text = iconv("UTF-8", "ASCII//TRANSLIT", $text);

答案 2 :(得分:4)

您可以在数组中定义可转换字符,然后使用str_replace()

$conversions = array(
    "æ" => "ae",
    "ñ" => "n",
);

$text = str_replace(array_keys($conversions), $conversions, $text);

答案 3 :(得分:2)

请原谅我猜你为什么这么做,但是......

如果这是用于搜索匹配:MySQL中的字符集整理点(例如),您可以搜索“n”并仍然匹配“ñ”

如果这是出于显示目的:我建议如果必须这样做,则在向用户显示文本时执行此操作。否则你永远无法获得原始数据。