2009-10-29 33 views
0

考慮一下:preg_replace函數在線的開始去除第二反斜線

$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之後,結果的回顯僅顯示一個反斜槓!

有人知道這是什麼原因造成的嗎?

回答

0

從PHP文檔:

要更換使用反斜線,必須加倍( 「\\」 PHP字符串)。

由於您的更換中不包含引號,你可以簡單地使用和addslashes():

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

在php.net更換的preg_replace的.... 我的解釋的確發現它已經讀過這個,但顯然是閉着眼睛.... – Hoppie 2009-10-29 11:53:17