preg_replace在行开头删除第二个反斜杠

时间:2009-10-29 10:58:53

标签: php regex path

考虑一下:

$sServerPath = "\\\\nlyehvedw1cl016\\projects$\\ARCLE_SW_SVN\\";
$sSVNParentPath = $sServerPath."svn\\";

$bla = "
authz_module_name = TEST_TestRepos
repository_dir = bla

W";
$sSVNParentPath = $sServerPath."svn\\";
$sReplaceBy =  "repository_dir = ".$sSVNParentPath.$sProjectName."\n";
echo $sReplaceBy;
echo preg_replace ('/repository_dir = ([a-zA-Z0-9\/].*?)\n/i', $sReplaceBy, $bla);

结果是:

repository_dir = \\nlyehvedw1cl016\projects$\ARCLE_SW_SVN\svn\

authz_module_name = TEST_TestRepos
repository_dir = \nlyehvedw1cl016\projects$\ARCLE_SW_SVN\svn\

W

$sReplaceB y的回显显示了我期望的结果字符串,包括前2个反斜杠。

然而,在preg_replace之后,结果的回显只显示了一个反斜杠!

有人知道造成这种情况的原因是什么吗?

1 个答案:

答案 0 :(得分:0)

来自PHP文档:

  

要替换使用反斜杠,必须加倍(“\\”PHP字符串)。

由于您的替换不包含引号,您只需使用addslashes():

echo preg_replace ('/repository_dir = ([a-zA-Z0-9\/].*?)\n/i', addslashes($sReplaceBy), $bla);