2013-01-17 52 views
0

如何替换字符串中的值,该字符串中的值与数组中的值相同,但前面是\?匹配数组中的值并用替代替换

$test = "Mike (D)"; 
$array('(',')','@','-'); 

作为()是在所述阵列$测试应该等于"Mike \(D\)";

所以基本上替换关于项目相同的项目与前缀的项目\

回答

1
$test  = "Mike (D)"; 
$find  = array('(',')','@','-'); 
$repalce = array('\(','\)','\@','\-'); 

$newphrase = str_replace($find, $repalce, $test); 
4
addcslashes($test, "()@-"); 

参见:http://php.net/manual/en/function.addcslashes.php

+0

为什么这给我'迈克\\(d \\)'? –

+0

我得到'Mike \(D \)' –

+0

似乎取决于'php'或'server'配置我认为会自动添加反斜杠。 –

0

你可以试试这样的:

foreach ($array as $needle) { 
    if(strpos($needle, $test) { 
     str_replace($needle, '\\'.$needle, $test); 
    } 
} 

或者,如果你创建一个替换字符串数组,只需使用:

$array = array('(', ')', '@',...); 
$replace = array('\(', '\)', '\@',...); 
str_replace($array, $replace, $test);