我在.txt文件中有这些类型的文本
rpad(SomeText, 2, \' \') , rpad(SomeTexxt, 18, \' \')
我希望将它们转换为
nvl(rpad(SomeText, 2, \' \'),\'$$\') , nvl(rpad(SomeTexxt, 18, \' \'),\'$$$$$$$$$$$$$$$$$$\')
我如何用PHP做到这一点? 新添加的$应该与2或18这样的数字一样多。
答案 0 :(得分:0)
您需要在此处使用pre_replace_callback
功能。
$str="rpad(SomeText, 2, \' \') , rpad(SomeTexxt, 18, \' \')";
echo preg_replace_callback("~rpad\(\w+,\h*(\d+),[^)]*\)~", function($m){
return 'nvl('.$m[0].",\'".str_repeat("$", $m[1])."\')";
}
, $str);
(\d+)
捕获somtext之后的数字,然后根据捕获的数字用于重复$
符号数次。
<强>输出:强>
nvl(rpad(SomeText, 2, \' \'),\'$$\') , nvl(rpad(SomeTexxt, 18, \' \'),\'$$$$$$$$$$$$$$$$$$\')