PHP转换特殊字符,如ş到s,ţ到t,ă到a

时间:2012-02-12 21:39:00

标签: php character

我不确定如何命名我需要的内容,我希望在PHP中将字符转换为更“正常”的字符集,例如:

ş to become s
ţ to become t, 
ă to become a

我有罗马尼亚城镇名称,我想在URL中使用更多“普通”字符。 我想我想将罗马尼亚字符转换为美国(或者将其称为正确名称)。

6 个答案:

答案 0 :(得分:5)

这个怎么样:

$text = str_replace(array("ş","ţ","ă"),array("s","t","a"),$text);

答案 1 :(得分:5)

您想要做的是称为音译。 在intl扩展中有一个Transliterator(仅限PHP 5.4):http://www.php.net/manual/en/transliterator.transliterate.php

示例:

$str = 'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ';
$rule = 'NFD; [:Nonspacing Mark:] Remove; NFC';

$myTrans = Transliterator::create($rule); 
echo $myTrans->transliterate($str);

//aaaaaceeeeiiiinooooouuuuyy
//AAAAACEEEEIIIINOOOOOUUUUY

答案 2 :(得分:2)

正如在这里已经说过的,你想做的事情叫做音译,但在你的情况下这可能并不总是正常工作 - 你真正想要做的就是产生一个'slug'(不要问我为什么会这样做......)来自人类提供的输入,即在网址中使用。

请查看以下代码:http://trac.symfony-project.org/browser/plugins/sfPropelActAsSluggableBehaviorPlugin/lib/sfPropelActAsSluggableBehaviorUtils.class.php,了解如何制作可靠的url-safe和人类可读的标识符。

答案 3 :(得分:1)

您可以使用str_replace

$text = str_replace( array( 'ş', 'ţ', 'ă' ), array( 's', 't,', 'a' ), $text );

答案 4 :(得分:1)

我会继续使用PHP提供给我们的更复杂的音译系统。关于iconv功能。

示例如下:

$city = iconv('UTF-8', 'ASCII//TRANSLIT', $city);
var_dump($city);

答案 5 :(得分:0)

查看strtr,用特定替换替换特定字符。

echo strtr($string, "äåö", "aao");