如何修改字符串以确保美元符号前面有奇数个反斜杠?
<?php
$string = file_get_contents('somefile.txt');
echo($string."'n");
$string=str_replace ('$' , ''$' ,$string);
echo($string."'n");
?>
somefile.txt
$first
'$second
''$third
'''$forth
''''$fifth
输出 $first
'$second
''$third
'''$forth
''''$fifth
'$first
''$second
'''$third
''''$forth
'''''$fifth
你在单引号中。在单引号中,美元符号不会被解析为任何东西。php中单引号中没有任何内容是自动解析的。如果你使用双引号,它们会被自动解析:
echo "$var"; // this will print the value of $var;
echo '$var'; // this will print $var;
echo "'$var";// this escapes the dollar sign so it will print $var;
如果字符串是在双引号中创建的,您不能只转义后面的美元符号,因为它已经被解析为一个变量。例子:
$var = 'hello';
$str = "$var";
此时,当$str的值为hello而不是$var时,您将尝试添加转义'$。
这将完成您所要求的。
$string = '$first '$second ''$third '''$forth ''''$fifth';
echo $string."'n";
$string = str_replace(['''','$'], ['', ''$'], $string);
echo $string."'n";
在某种程度上,不管怎样。首先移除所有'
然后将所有$
更改为'$
BTW, echo
不是一个函数。:)
我不是一个正则表达式向导,所以下面将在$
之前的所有零和偶数'
上添加一个反斜杠(字符串中的第一个除外):
$string = <<<'EOL'
$first $another '$second ''$third '''$forth ''''$fifth
EOL;
var_dump($string);
$string = preg_replace('/([^'''])(([''']{2})+)?'$/', '$1$2'''$', $string);
var_dump($string);