mb_strtolower 不工作
mb_strtolower not working
我有以下字符串:
$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"
.
有人可以帮助我吗?
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"
尝试
$newStr = strtolower($var);
echo $newStr;
问题是你想在音译后替换某些字符,但你在字符class []
的开头指定了^
(具有特殊含义,表示NOT) ].
所以您要替换的字符不是 ~'"
(在您的示例中恰好是所有这些字符),因此它会产生一个空字符串。要修复,只需转义 ^
,将其从开头移开或在不需要时将其删除,应该没问题:
/[\^~\'"]/
或者:
/[~^\'"]/
我有以下字符串:
$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"
.
有人可以帮助我吗?
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"
尝试
$newStr = strtolower($var);
echo $newStr;
问题是你想在音译后替换某些字符,但你在字符class []
的开头指定了^
(具有特殊含义,表示NOT) ].
所以您要替换的字符不是 ~'"
(在您的示例中恰好是所有这些字符),因此它会产生一个空字符串。要修复,只需转义 ^
,将其从开头移开或在不需要时将其删除,应该没问题:
/[\^~\'"]/
或者:
/[~^\'"]/