2012-02-24 67 views
0

我有一个PHP模板引擎,我一直在建设。但是在正则表达式中我并不那么强大。 我需要找到任何看起来像这样的mathcing字符串。请记住,这是一个简单的模板引擎正则表达式,PHP ..从源头删除任何字符串

字符串看起来是这样的:{$字符串}
现在的字符串是只从一个数组extrateced一个实际的PHP variabel的别名。

谢谢:)

编辑: 没有任何一个有理解正则表达式很好看,你们使它看起来很容易:P

+0

智者? “{\ $ \ w +}”会这样吗? – Benoit 2012-02-24 16:52:52

+0

你认为哪些有效的字符出现在字符串标签中? – 2012-02-24 16:53:14

回答

3

如果你想获得更详细和盖什么是允许的PHP变量名,你可以试试这个:

\{\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*\} 
+0

谢谢,我解决了这个问题。看起来我错过了两个卷曲线上的反斜杠。 – 2012-02-24 18:06:59

0
\{\$.*\} 

我认为应该这样做。

实际上:

\{\$[A-Za-z]+[^\}]*\} 

匹配的一个或多个字母字符(其一个PHP变量具有开始与),以及零个或多个字符之后。

[^\}]将确保它一次只能找到一个。

+0

'\ {\ $。*?\}'可以更好地工作 – Damp 2012-02-24 16:56:07

+0

@Damp实际上,如果您想查看哪些方面可以做得更好,我更好地更新了我的答案。 – James 2012-02-24 17:01:51

+0

OP是否想要捕获(他可能会这样做)'{(。*)}'不会工作,因为它会匹配这个'{$ a} {$ b}''并捕获''$ a} { $ b''因为正则表达式贪婪。我所做的只是改变'。*'为'。*?'来防止贪婪行为 – Damp 2012-02-24 17:05:42