【问题标题】:Preg_replace, replacing just the part of pattern in ( )?Preg_replace,只替换()中的部分模式?
【发布时间】:2011-03-30 08:10:13
【问题描述】:

很抱歉这个基本问题,但我一直在查看我能找到的有关 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 regex preg-replace


【解决方案1】:
$pattern= '/(#\s*tjs\s*\{\s*)(.*?)(\s*\})/imsU';
$replacement= "test";
$return_string = preg_replace($pattern,'$1'.$replacement.'$3',$string);

【讨论】:

  • 谢谢,现在我明白了,我在 php preg_replace 页面的一个示例中看到了 $1 和 $3 的提及,但他们使用了一些奇怪的语法 { 所以我认为这让我失望了
  • 你也可以用\1和\3代替$1和$3
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多