Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Preg_replace,只替换()中模式的一部分?_Php_Regex_Preg Replace - Fatal编程技术网

Php 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

对于这个基本的问题,我很抱歉,但是我已经查阅了所有我能找到的关于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 }';

你也可以发布预期的替换字符串吗?谢谢,现在我明白了,我在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);