Php Preg_replace,只替换()中模式的一部分?
对于这个基本的问题,我很抱歉,但是我已经查阅了所有我能找到的关于preg_replace的信息,但我仍然无法弄清楚。。我有一个大字符串,比如:Php Preg_replace,只替换()中模式的一部分?,php,regex,preg-replace,Php,Regex,Preg Replace,对于这个基本的问题,我很抱歉,但是我已经查阅了所有我能找到的关于preg_replace的信息,但我仍然无法弄清楚。。我有一个大字符串,比如: $string= '# tjs { fassdaf } #fsk { fssf} # fskff { casf }'; 当我这样做时,它将替换整个模式,而不仅仅是()中的部分,正如我所期望的那样。。我想知道我怎样才能替换()中的部件。。谢谢 $pattern= '/#.*tjs.*\{.*(.*)\}/imsU'; $replacement
$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 }';
你也可以发布预期的替换字符串吗?谢谢,现在我明白了,我在php preg_replace页面的一个示例中看到了$1和$3,但是他们使用了一些奇怪的语法,{所以我想这让我很吃惊,你也可以使用\1和\3代替$1和$3
$pattern= '/(#\s*tjs\s*\{\s*)(.*?)(\s*\})/imsU';
$replacement= "test";
$return_string = preg_replace($pattern,'$1'.$replacement.'$3',$string);