删除各种符号,如éé

时间:2011-08-21 17:34:32

标签: php

好的我已经阅读了许多帖子,并找到了一些可行的选项,但现在我只是比任何事情更好奇......

尝试删除以下字符时,因为谷歌在XML产品Feed中不喜欢它们。

为什么这样做:

但这两个都没有吗?

$string = preg_replace("/[^[:print:]]+/", ' ', $string);

$string = preg_replace("/[^[:print:]]/", ' ', $string);

将这一切放在上下文中是完整的功能:

        // Remove all unprintable characters
        $string = ereg_replace("[^[:print:]]", ' ', $string);
        // Convert back into HTML entities after printable characters removed
        $string = htmlentities($string, ENT_QUOTES, 'UTF-8');
        // Decode back
        $string = html_entity_decode($string, ENT_QUOTES, 'UTF-8');
        // Return the UTF-8 encoded string
        $string = strip_tags(stripslashes($string));
        // Return the UTF-8 encoded string
        return utf8_encode($string);
    }           

1 个答案:

答案 0 :(得分:0)

代码不起作用的原因是因为它删除了不在posix:print:字符组中的字符,该字符组由可打印字符组成。 áÉ等都是可打印的。

您可以找到more about posix sets here

此外,删除突出显示的字符可能并非总是最佳选择...请查看this question以了解替代方案。