【问题标题】:special character replacement not working特殊字符替换不起作用
【发布时间】:2014-12-20 07:44:28
【问题描述】:

我写了这个方法来替换特殊字符:

function replace_sonder($string)
    {
        $string2 = str_replace("ä", "ä", $string);
        $string2 = str_replace("%E4", "ä", $string2);
        $string2 = str_replace("ö", "ö", $string2);
        $string2 = str_replace("%F6", "ö", $string2);
        $string2 = str_replace("ü", "ü", $string2);
        $string2 = str_replace("%FC", "ü", $string2);
        $string2 = str_replace("Ä", "Ä", $string2);
        $string2 = str_replace("%C4", "Ä", $string2);
        $string2 = str_replace("Ö", "Ö", $string2);
        $string2 = str_replace("%D6", "Ö", $string2);
        $string2 = str_replace("Ü", "Ü", $string2);
        $string2 = str_replace("%DC", "Ü", $string2);
        $string2 = str_replace("ß", "ß", $string2);
        $string2 = str_replace("%DF", "ß", $string2);
        return $string2;
    }

它总是返回与我传入的字符串相同的字符串。我在哪里遗漏了什么或者有其他方法可以做到这一点?

【问题讨论】:

  • 您是否设置了文件编码类型 UTF-8 或 UTF-16?
  • 你输入的字符串是什么?
  • 你的函数简写:function replace_sonder($string) { return $string = htmlentities(rawurldecode($string)); }

标签: php special-characters str-replace


【解决方案1】:
$string = preg_replace("/ä/", "ä", $string);
...

但更好的方法是:

$string = htmlentities($string, ENT_QUOTES);

【讨论】:

  • - 1 个 preg 替换没有实现 OP 的目标
  • @Paedow 您的函数有两个不同的“函数”。首先,正如我在上面所反映的,它将 UNICODE 转换为 HTML 实体。第二个是将 URL 参数从$_REQUEST['unicode_param'] 转换为 HTML 实体。我相信,将这两个功能混合在一起整个一个自定义功能是错误的做法。
【解决方案2】:

检查您要比较的输出不是 HTML 页面,因为它会再次将字符转换回来。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-16
    • 2014-11-03
    • 2019-09-23
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    相关资源
    最近更新 更多