2011-01-27 34 views

回答

2

下面应该工作:

preg_replace('/^\s*\}\s*$/m', $replacement, $subject); 
  • 的​​意味着任何数量的字母S。你可能的意思是\s*,任何数量的whitespace characters
  • 您需要启用multiline模式才能使^anchor以每行为基础工作;默认设置是^是开头,$是整个字符串的结尾,而不是单行。
  • 请记住$anchor,否则像}hello之类的东西也会匹配。
1

^$一个的开头和结尾匹配。您需要m修饰符才能使此匹配的开始和结束。

您的RE将无法按预期工作。​​匹配s的零个或多个匹配项。很可能你想用\s*来代替白色空间。

preg_replace('/^(\s*)(\})(\s*)$/m', $replacement, $subject); 
0

多行免费版本,能够在较大的正则表达式使用应当需要跨越行:

/(^|\n)([^\S\n]*\}[^\S\n]*)(?=\n|$)/

相关问题