preg_replace satırın başındaki ikinci tersbölülerin kaldırır

1 Cevap php

Bu düşünün:

$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);

Sonuç:

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

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

W

$sReplaceB y yankı ilk 2 geri işaretleri dahil bunu beklemek gibi sonuç dizesi, gösterir.

Ancak, preg_replace sonra, sonucu yankı tek ters bölü gösterir!

Herkes bu neden ne biliyor musun?

1 Cevap

PHP docs:

Yedek olarak ters eğik kullanmak için, ("\ \" PHP string) katına olmalıdır.

Senin yerine tırnak ihtiva etmediğinden, sadece addslashes () kullanabilirsiniz:

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