警告:preg_replace():编译失败:在偏移量5处不重复

时间:2013-09-26 23:20:25

标签: php regex apache

正如我在标题中提到的,我收到错误*警告:preg_replace():编译失败:*这对我来说真的很奇怪;

实际上在godaddy的VPS上我移动了我的网站;首先我得到了GD库的错误;所以我使用WHM的简易apache安装了GD库, 然后,当我试图运行我的网站时,我收到此警告,Warning: preg_replace(): Compilation failed: nothing to repeat at offset 5在此页 techchef.org/development/module/newsfeed/LoadDataFromFeed.php

然而,我的另一台服务器运行相同的脚本 techchef.org/development/module/newsfeed/LoadDataFromFeed.php ,它运行良好

这是脚本我不确定是否是因为apache设置,如果是,那么实际上我错过了。

下面是它提到错误的php脚本

$str= strtolower($str);
      $str= preg_replace("/(à|á|?|?|ã|â|?|?|?|?|?|a|?|?|?|?|?)/","a",$str);  
      $str= preg_replace("/(è|é|?|?|?|ê|??|?|?|?|?)/","e",$str);  
      $str= preg_replace("/(ì|í|?|?|i)/","i",$str);  
      $str= preg_replace("/(ò|ó|??|??|õ|ô|?|?|?|?|?|o|??|?|?|?|?)/","o",$str);  
      $str= preg_replace("/(ù|ú|?|?|u|u|?|?|?|?|?)/","u",$str);  
      $str= preg_replace("/(?|ý|?|?|?)/","y",$str);  
      $str= preg_replace("/(d)/","d",$str);  
      $str= preg_replace("/(!|@|%|\^|\*|\(|\)|\+|\=|\<|\>|\?|\/|,|\.|\:|\;|\'| |\"|\&|\#|\[|\]|~|$|_)/","-",$str); 
      $str= preg_replace("/(-+-)/","-",$str); 
      $str= preg_replace("/(^\-+|\-+$)/","",$str); 
      $str= preg_replace("/(-)/"," ",$str); 

1 个答案:

答案 0 :(得分:3)

当您从格式化/编码的任何地方复制代码时。

$str= preg_replace("/(à|á|?|?|ã|â|?|?|?|?|?|a|?|?|?|?|?)/","a",$str);
                       // ^- offset 5

受过教育的猜测,这[和所有其他问号]应该是另一个a - 类似的字符,而不是问号。 ?是与重复[0或1]相关的元字符,应该为文字?进行转义。

其他表达也一样。