我正在调查,但我无法找到解决办法。
这样做的目的是替换角色 $_
从一根带着别的东西的绳子。如果将美元符号从 $search
变量,它可以工作(但不是以一种理想的方式)。
它不起作用,因为美元符号是一个特殊的字符,但我找不到如何摆脱它。
这就是我所拥有的:
$search = '$_'; // replace to '_' OR '[$_]' it returs "$1" instead of "1"
$replace = 1;
$regex = '#".*?"(*SKIP)(*FAIL)|\b' . $search . '\b#s';
$fullInput = '"$_" $_';
$r = preg_replace([$regex], $replace, $fullInput);
echo $r . PHP_EOL;
// Output with current code : "$_" $_
// Output with '_' or '[$_]': "$_" $1
//
// Expected result: "$_" 1
要考虑到,如果文本位于引号之间,则不应替换。
1条答案
按热度按时间e5nszbig1#
您可以使用此正则表达式进行搜索:
并将其替换为
[$0]
以前的模式|
匹配双引号字符串,允许中间有转义引号。模式后|
比赛$_
.正则表达式演示
正则表达式详细信息:
"[^\\"]*(?:\\.|[^\\"]*)*"
:匹配双引号字符串。我们允许在此匹配中使用转义字符。(*SKIP)(*F)
:跳过并失败此匹配|
:或\$_
:匹配文本$_
代码:输出: