Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP和重音字符(Ba\u015f\u00e7\u0131l)_Php - Fatal编程技术网

PHP和重音字符(Ba\u015f\u00e7\u0131l)

PHP和重音字符(Ba\u015f\u00e7\u0131l),php,Php,我有一个类似“Ba\u015f\u00e7\u0131l”的字符串。我想这些是一些特殊的口音字符。我如何: 1) 用重音符号显示字符串(即用实际字符替换代码) 2) 存储这样的字符串的最佳实践是什么 2) 如果我不想允许这样的字符,我如何用“普通字符”替换它 输出它们将输出适当的字符。如果您没有为输出文档提供任何编码,浏览器将尝试猜测要显示的最佳编码。否则,您应该找出它并显式输出 只需存储它们,或者将它们转换为普通字符并二进制存储 使用iconv函数从一种编码转换为另一种编码,然后使用所需的编码

我有一个类似“Ba\u015f\u00e7\u0131l”的字符串。我想这些是一些特殊的口音字符。我如何:

1) 用重音符号显示字符串(即用实际字符替换代码)

2) 存储这样的字符串的最佳实践是什么

2) 如果我不想允许这样的字符,我如何用“普通字符”替换它

  • 输出它们将输出适当的字符。如果您没有为输出文档提供任何编码,浏览器将尝试猜测要显示的最佳编码。否则,您应该找出它并显式输出
  • 只需存储它们,或者将它们转换为普通字符并二进制存储
  • 使用iconv函数从一种编码转换为另一种编码,然后使用所需的编码保存源文件以支持它
  • 要显示字符,请查看

  • 您可以像这样存储字符,也可以解码,只要确保您的存储可以处理UTF8字符集

  • 与translit标志一起使用

  • 这里有一个例子。。。
    function replace_unicode_escape_sequence($match) {
        return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');
    }
    $str = preg_replace_callback('/\\\\u([0-9a-f]{4})/i', 'replace_unicode_escape_sequence', $str);
    
    echo $str;
    
    echo '<br/>';
    $str = iconv('UTF8', 'ASCII//TRANSLIT', $str);
    
    echo $str;
    
    函数替换\u unicode\u转义\u序列($match){
    返回mb_convert_编码(pack('H*',$match[1]),'UTF-8','UCS-2BE');
    }
    $str=preg\u replace\u回调('/\\\\u([0-9a-f]{4})/i','replace\u unicode\u escape\u sequence',$str);
    echo$str;
    回声“
    ”; $str=iconv('UTF8','ASCII//TRANSLIT',$str); echo$str;
    这里是另一个选项:

    <html><head>
        <!-- don't forget to tell the browser what encoding you're using: -->
        <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
    </head><body><?php
    
    $string = "Ba\u015f\u00e7\u0131l";
    echo json_decode('"'.str_replace('"', '\"', $string).'"');
    
    ?></body></html>
    
    
    
    我有根据的猜测是,您从JSON字符串中获得了这样的值。如果是这种情况,则应使用以下方法正确解码整段数据:


    PHP中没有本机支持对此类字符串进行解码

    使用本机函数有几种技巧,但我不确定其中任何一种是安全的,并且是防注入的:

    • json_解码。看
    • xml解析器
    • 正则表达式替换

      如果任何人有其他使用本机函数转义/取消转义Utf8的选项,请发布回复。

    使用Zend Framework的另一个选项是下载Zend_Utf8提案类。有关更多信息,请参阅

    <?php
    
    header('Content-Type: text/plain; charset=utf-8');
    
    $data = '"Ba\u015f\u00e7\u0131l"';
    var_dump( json_decode($data) );
    
    ?>