0

我正在运行这行代码。

$string = convert_case('MONTAÑA 221');

public function convert_case($string)
{
    $string = mb_convert_case($string, MB_CASE_TITLE, "UTF-8");

    return $string;
}

当我在 laravel 中运行它时,我得到了空字符串,但是当我在浏览器中使用一个简单的 test.php 文件在 wamp 上运行它时,我得到了正确的字符串。

4

2 回答 2

1

我以前见过这样的问题,也许你的问题不一样,但是设置 HTML 页面的编码可能对你有用。

在标题中:

<meta charset="utf-8" /> 
于 2016-11-03T17:58:06.027 回答
1

根据您发布的代码解决您的问题:

                             $string = 'MONTAÑA 221';
                                |
                                v
public function convert_case($string)
{   
    $string = html_entity_decode($input,ENT_COMPAT,"UTF-8");

    $oldLocale = setlocale(LC_CTYPE, '0');  

    setlocale(LC_CTYPE, 'en_US.UTF-8');
    $string = iconv("UTF-8","ASCII//TRANSLIT",$string);

    setlocale(LC_CTYPE, $oldLocale);

    return strtolower(preg_replace('/[^a-zA-Z0-9]+/','',$string));
}

输出:

蒙大拿221

在您认为需要它们的空间中编写代码。此代码特定于在后端运行。使用 HTML:

<meta charset="utf-8">

可能是它在前端正确显示的原因。

于 2016-11-03T18:06:32.923 回答