首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换字符`不起作用

替换字符`不起作用
EN

Stack Overflow用户
提问于 2017-02-21 09:13:18
回答 2查看 99关注 0票数 1

我有一个网页,你可以上传文件。要替换特殊字符,我使用以下函数:

代码语言:javascript
复制
function createSafeFilenameForQuestion($filename){
    $filename = str_replace(" ", "_",  $filename);
    $search  = array("ä", "ö", "ü", "ß", "Ö", "Ä", "Ü");
    $replace = array("ae","oe","ue","ss","Oe","Ae","Ue");
    $ret = str_replace($search, $replace, $filename);
    $in_charset = mb_detect_encoding($filename);
    $ret = iconv($in_charset, 'US-ASCII//TRANSLIT', $ret);
    $ret = preg_replace("/\s/i", "_", $ret);
    $ret = preg_replace("/[^0-9a-z_\.]/i", "", $ret);
    $filename = mb_strtolower($ret);
    return $filename;
}
createSafeFilenameForQuestion("ä#`´+4`32 _.png");

我的问题是,这段代码在PHP 5.2.5的本地机器上运行得很好,而在服务器上使用PHP5.2.0则不起作用。

代码语言:javascript
复制
local output: aeae432__.png
server output: ae

似乎,角色´才是问题所在。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-21 13:53:08

安装并启用了mbstring。但正如阿尔瓦罗所说,使用iconv($in_charset, 'US-ASCII//TRANSLIT', $ret);是不必要的。我删除了这条线,现在它起作用了。

代码语言:javascript
复制
function createSafeFilenameForQuestion($filename){
    $filename = str_replace(" ", "_",  $filename);

    $search  = array("ä", "ö", "ü", "ß", "Ö", "Ä", "Ü");
    $replace = array("ae","oe","ue","ss","Oe","Ae","Ue");
    $ret = str_replace($search, $replace, $filename);

    $ret = preg_replace("/\s/i", "_", $ret);
    $ret = preg_replace("/[^0-9a-z_\.]/i", "", $ret);
    $filename = mb_strtolower($ret);
    return $filename;
}

输入:ää#´+432 _.png

输出: ae432__.png

票数 0
EN

Stack Overflow用户

发布于 2017-02-21 10:32:22

确保您的服务器上安装了mbstring扩展,以检查您可以使用phpinfo();创建一个php文件,然后运行它以查看mbstring是否已安装/加载。

如果没有安装它,可以通过运行以下命令来安装:

apt-get install php5-mbstring

service apache2 restart

为了使它能够运行:

sudo phpenmod mbstring

这应该能解决问题。

但是如果您是在共享主机服务器上,那么您需要联系主机支持来启用它.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42363071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档