preg_replace()[function.preg-replace]:分隔符不能是字母数字或反斜杠

时间:2012-04-06 17:19:43

标签: php preg-replace expression

我想将我的字符串变量中的每个“../”和“script / uploaded”替换为“”!

我有一个这样的功能:

public function mypregReplace($v) 
{                          
    return preg_replace(
        array("%script/uploaded%"  , ""),
        array( "[\.\./]"  ,  ""),
        $v); 
}

但是它显示了这个错误

  

preg_replace()[function.preg-replace]:分隔符不能是   

中的字母数字或反斜杠

我的模式出了什么问题?!

2 个答案:

答案 0 :(得分:2)

你的格式错了,你不需要preg_replace。使用str_replace

public function mypregReplace($v) 
{                          
   return str_replace(
    array("script/uploaded"  , "../"),
    '',
    $v); 
}

答案 1 :(得分:1)

你的阵列错了。第一个数组应该只包含模式,第二个数组应该是替换值。你想要:

public function mypregReplace($v) 
{                          
    return preg_replace(
        array("%script/uploaded%", "%\.\./%"),
        array("",  ""),
        $v); 
}

可以进一步简化为:

public function mypregReplace($v) 
{                          
    return preg_replace(
        array('%script/uploaded%', '%\.\./%'),
        '',
        $v); 
}

但是,您应该使用str_replace。您不需要正则表达式来匹配完全字符串:

public function mypregReplace($v) 
{                          
    return str_replace(array('script/uploaded', '../'), '', $v); 
}