小编Dig*_*ris的帖子

使用preg_replace进行可变长度屏蔽

我正在屏蔽字符串中的单引号(包含)之间的所有字符preg_replace_callback().但我想只preg_replace()在可能的情况下使用,但一直无法弄清楚.任何帮助,将不胜感激.

这是我使用preg_replace_callback()它产生正确的输出:

function maskCallback( $matches ) {
    return str_repeat( '-', strlen( $matches[0] ) );
}
function maskString( $str ) {
    return preg_replace_callback( "('.*?')", 'maskCallback', $str );
}

$str = "TEST 'replace''me' ok 'me too'";
echo $str,"\n";
echo $maskString( $str ),"\n";
Run Code Online (Sandbox Code Playgroud)

输出是:

TEST 'replace''me' ok 'me too'
TEST ------------- ok --------
Run Code Online (Sandbox Code Playgroud)

我尝试过使用:

preg_replace( "/('.*?')/", '-', $str );
Run Code Online (Sandbox Code Playgroud)

破折号被消耗掉,例如:

TEST -- ok -
Run Code Online (Sandbox Code Playgroud)

我尝试过的其他任何东西都不起作用.(我显然不是正则表达式专家.)这可能吗?如果是这样,怎么样?

php regex preg-replace

12
推荐指数
3
解决办法
1250
查看次数

标签 统计

php ×1

preg-replace ×1

regex ×1