preg_replace удаляет второй обратный слеш в начале строки - PullRequest
0 голосов
/ 29 октября 2009

Учтите это:

$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 голосов
/ 29 октября 2009

Из документов PHP:

Чтобы использовать обратную косую черту в качестве замены, она должна быть удвоена ("\\" строка PHP).

Поскольку ваша замена не содержит кавычек, вы можете просто использовать addlashes ():

echo preg_replace ('/repository_dir = ([a-zA-Z0-9\/].*?)\n/i', addslashes($sReplaceBy), $bla);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...