在wampserver的php中使用函数preg_replace()时出错

时间:2012-02-27 09:28:10

标签: php

我有一个功能:

function filter($str) { 
            $str = preg_replace("/(à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ)/", 'a', $str); 
            $str = preg_replace("/(è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ)/", 'e', $str); 
            $str = preg_replace("/(ì|í|ị|ỉ|ĩ)/", 'i', $str); 
            $str = preg_replace("/(ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ)/", 'o', $str); 
            $str = preg_replace("/(ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ)/", 'u', $str); 
            $str = preg_replace("/(ỳ|ý|ỵ|ỷ|ỹ)/", 'y', $str); 
            $str = preg_replace("/(đ)/", 'd', $str); 
            $str = preg_replace("/(À|Á|Ạ|Ả|Ã|Â|Ầ|Ấ|Ậ|Ẩ|Ẫ|Ă|Ằ|Ắ|Ặ|Ẳ|Ẵ)/", 'A', $str); 
            $str = preg_replace("/(È|É|Ẹ|Ẻ|Ẽ|Ê|Ề|Ế|Ệ|Ể|Ễ)/", 'E', $str); 
            $str = preg_replace("/(Ì|Í|Ị|Ỉ|Ĩ)/", 'I', $str); 
            $str = preg_replace("/(Ò|Ó|Ọ|Ỏ|Õ|Ô|Ồ|Ố|Ộ|Ổ|Ỗ|Ơ|Ờ|Ớ|Ợ|Ở|Ỡ)/", 'O', $str); 
            $str = preg_replace("/(Ù|Ú|Ụ|Ủ|Ũ|Ư|Ừ|Ứ|Ự|Ử|Ữ)/", 'U', $str); 
            $str = preg_replace("/(Ỳ|Ý|Ỵ|Ỷ|Ỹ)/", 'Y', $str); 
            $str = preg_replace("/(Đ)/", 'D', $str); 
            $str = preg_replace("/(–)/", ' ', $str); 
            $str = str_replace(" ", "-", str_replace("&*#39;","",$str)); 
            return $str; 
        }
$test = "Chào thế giới";
echo filter($test);

我使用wampserver,当运行代码错误时:

Warning: preg_replace() [function.preg-replace]: Compilation failed: nothing to repeat at offset 5 in C:\wamp\www\xxx.php on line xx

如果结果正确is chao-the-gioi

,如何配置此错误

1 个答案:

答案 0 :(得分:0)

除非您指定ù修饰符,否则PHP不会将u视为单个字符。等等。它在默认字符集中被视为多字节字符串 - 因此preg_replace变得“混乱”。