gpt4 book ai didi

php - 替换非 UTF8 字符

转载 作者:行者123 更新时间:2023-12-01 23:25:31 24 4
gpt4 key购买 nike

在 php 中,我需要替换字符串中的所有非 UTF8 字符。然而,不是通过一些等价的(比如 iconv 函数和 //TRANSLIT ),而是通过一些选择的字符(比如 "_""*" )。

通常我希望用户能够看到找到无效字符的位置。

我没有找到任何执行此操作的函数,因此我打算使用:

  • 使用 iconv//IGNORE
  • 对两个字符串进行比较,并在非 UTF8 字符的位置插入想要的字符

  • 您是否看到了更好的方法来做到这一点,php 中是否有一些功能可以组合以具有这种行为?

    谢谢你的帮助。

    最佳答案

    这里有 2 个函数可以帮助您实现接近您想要的目标:

    //reject overly long 2 byte sequences, as well as characters above U+10000 and replace with ?
    $some_string = preg_replace('/[\x00-\x08\x10\x0B\x0C\x0E-\x19\x7F]'.
    '|[\x00-\x7F][\x80-\xBF]+'.
    '|([\xC0\xC1]|[\xF0-\xFF])[\x80-\xBF]*'.
    '|[\xC2-\xDF]((?![\x80-\xBF])|[\x80-\xBF]{2,})'.
    '|[\xE0-\xEF](([\x80-\xBF](?![\x80-\xBF]))|(?![\x80-\xBF]{2})|[\x80-\xBF]{3,})/S',
    '?', $some_string );

    //reject overly long 3 byte sequences and UTF-16 surrogates and replace with ?
    $some_string = preg_replace('/\xE0[\x80-\x9F][\x80-\xBF]'.
    '|\xED[\xA0-\xBF][\x80-\xBF]/S','?', $some_string );

    请注意,您可以通过更改位于 preg_replace('blablabla', **'?'**, $some_string) 的字符串来更改替换(当前是 '?' 与其他任何内容)

    原文: http://magp.ie/2011/01/06/remove-non-utf8-characters-from-string-with-php/

    关于php - 替换非 UTF8 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7502164/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com