Preg_replace,只替换()中的模式部分?

时间:2010-08-16 09:03:37

标签: php regex preg-replace

对不起这个基本问题,但我一直在查看有关preg_replace的所有信息,我可以找到,但我仍然无法解决这个问题。我有一个大字符串,例如:

  $string= '# tjs { fassdaf } #fsk { fssf} # fskff { casf }';

当我这样做时,它取代了整个模式,而不是像我期望的那样替换()中的部分。我想知道如何在()中替换部分..谢谢

  $pattern= '/#.*tjs.*\{.*(.*)\}/imsU';
  $replacement= "test";
  $return_string = preg_replace ($string, $pattern, $replacement );

预期更换字符串:

'# tjs {test} #fsk { fssf} # fskff { casf }';

1 个答案:

答案 0 :(得分:3)

$pattern= '/(#\s*tjs\s*\{\s*)(.*?)(\s*\})/imsU';
$replacement= "test";
$return_string = preg_replace($pattern,'$1'.$replacement.'$3',$string);