我有以下字符串:
$var = "RUA TANGARA"
我正在做:
echo mb_strtolower(preg_replace('/[^~\'"]/', null, iconv('UTF-8', 'ASCII//TRANSLIT', $var)), 'UTF-8');
但这仍然是"RUA TANGARA"
。
我使用preg_replace()
,因为$var
可以是"RÜÁ TÃNAGARA"
。
有人可以帮助我吗?
答案 0 :(得分:1)
PHP的功能非常好用,看看这个简单的演示:
<?php
$data = "RUA TANGARA";
$result = mb_strtolower($data);
var_dump($result);
明显的输出是:
string(11)“rua tangara”
与非ascii字符相同:
<?php
$data = 'RÜÁ TÃNAGARA';
$result = mb_strtolower($data);
var_dump($result);
输出是:
string(15)“rüátãnagara”
答案 1 :(得分:1)
问题是您希望在音译后替换某些字符,但是您在字符类^
的开头指定了[]
(具有特殊含义并且表示NOT)。
所以你要替换非~'"
的字符(在你的例子中恰好是所有字符),所以它会产生一个空字符串。要解决问题,只需转义^
,将其从开头移开或删除它,如果不需要它应该没问题:
/[\^~\'"]/
或者:
/[~^\'"]/
答案 2 :(得分:-1)
尝试
$newStr = strtolower($var);
echo $newStr;