Я маскирую все символы между одинарными кавычками (включительно) внутри строки, используя 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";
Выход:
TEST 'replace''me' ok 'me too'
TEST ------------- ok --------
Я попытался использовать:
preg_replace( "/('.*?')/", '-', $str );
но штрихи потребляются, например:
TEST -- ok -
Все, что я пробовал, тоже не работает. (Я, очевидно, не специалист по регулярному выражению.) Можно ли это сделать? Если да, то как?