2010-08-16 3 views
5

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

Можете ли вы опубликовать ожидаемую замененную строку? – kennytm

ответ

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

Спасибо, теперь я понимаю, что я видел упоминание о $ 1 и $ 3 в примере на странице php preg_replace, но они использовали какой-то странный синтаксис с {так, я думаю, что меня отбросило – Rick

+0

, вы также можете использовать \ 1 и \ 3 вместо $ 1 и $ 3 – stillstanding

Смежные вопросы