需要仅过滤扩展的ASCII字符,如Ä,å,à等

时间:2011-12-23 16:18:57

标签: php preg-replace

我需要阅读一组文本文件并获取内容,这部分是成功的。问题是内容由一些扩展的ACII字符组成,我使用以下内容来过滤这些字符:

$contents = preg_replace('/[^(\x20-\x7F)]*/','', $contents);

这将删除所有扩展的ASCII字符以及所需的字符,如撇号,引号等

我应该如何更改preg_replace来执行此操作?

1 个答案:

答案 0 :(得分:1)

问题不在于ascii '",它们不在您要过滤的范围内。问题很可能是Windows智能报价。在运行替换之前过滤掉那些,你会有更多的快乐;)

例如,taken from this link

<?php 

function convert_smart_quotes($string) 
{ 
    $search = array(chr(145), 
                    chr(146), 
                    chr(147), 
                    chr(148), 
                    chr(151)); 

    $replace = array("'", 
                     "'", 
                     '"', 
                     '"', 
                     '-'); 

    return str_replace($search, $replace, $string); 
}

$contents = convert_smart_quotes($contents);
$contents = preg_replace('/[^(\x20-\x7F)]*/','', $contents);
var_dump($contents);

?>