Preg_replace, заменяющий только часть шаблона в ()? - PullRequest
5 голосов
/ 16 августа 2010

Извините за этот основной вопрос, но я просматривал всю информацию о 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 Ответ

3 голосов
/ 16 августа 2010
$pattern= '/(#\s*tjs\s*\{\s*)(.*?)(\s*\})/imsU';
$replacement= "test";
$return_string = preg_replace($pattern,'$1'.$replacement.'$3',$string);
...