我尝试使用php preg_replace替换字符串,但我不喜欢我的解决方案。
我有:
$input = '{@something,param1,param2,param3,paramN}';
$something = 'any string with %3 and %1, then %2 and any more params like %N';
我想得到:
$output = 'any string with param3 and param1, then param2 and any more params like paramN';
当我只有3个或更少的参数时,以下代码可以正常工作,但它不干净:
preg_replace('/\{@'.$someting.',([\$]?[^}]+),([\$]?[^}]+),([\$]?[^}]+)\}/i', 'str_replace(array("%1","%2","%3"),array(\1,\2,\3),"'.$data.'")', $input);
preg_replace('/\{@'.$someting.',([\$]?[^}]+),([\$]?[^}]+)\}/i', 'str_replace(array("%1","%2"),array(\1,\2),"'.$data.'")', $input);
preg_replace('/\{@'.$someting.',([\$]?[^}]+)\}/i', 'str_replace("%1",\1,"'.$data.'")', $input);
我正在寻找更好的解决方案,将这三条线合二为一。 我喜欢用这样的东西:
preg_replace('/\{@'.$someting.',(PATTERN)\}/i', 'str_replace(array("%1","%2","%N"),array(\1,\2,\N),"'.$data.'")', $input);