dszm02606009 2018-06-15 02:53
浏览 21

Php Slugifiy函数返回值在2台服务器中有所不同

This is my slugify function:

function slugify($text) {
    $text = preg_replace('~[^\\pL\d]+~u', '-', $text);
    $text = trim($text, '-');
    $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
    $text = mb_strtolower($text, 'UTF-8');
    $text = preg_replace('~[^-\w]+~', '', $text);
    if(empty($text)) return 'n-a';
    return $text;
}

This is the test:

echo slugify("españa");

In my development server the result is:

  • espana

In my production server the result is:

  • espaa

I'm sure it has something to do with charset encoding, but both servers have UTF-8 as default_charset. What else could I be missing? Any ideas?

  • 写回答

1条回答 默认 最新

  • duanjia4969 2018-06-15 03:10
    关注

    The problem comes from the iconv function. In the comments of the documentation, we can see:

    Please note that iconv('UTF-8', 'ASCII//TRANSLIT', ...) doesn't work properly when locale category LC_CTYPE is set to C or POSIX. You must choose another locale otherwise all non-ASCII characters will be replaced with question marks.

    评论

报告相同问题?

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c