0
在为客户开发私人CMS时,我有一个想法来实现一个基于php的服务器端和灵活的“语言”。Reg-Ex用于过滤,解析和替换特定的字符串? (php)
我无法找到一个请求 - 表达式查找(过滤器..)下面的字符串([..]是代码,它将被过滤掉后被解析),我想过滤字符串出与换行。
<(
[..]
)>
我一直在寻找解决方案,但我没有找到解决方案。
在为客户开发私人CMS时,我有一个想法来实现一个基于php的服务器端和灵活的“语言”。Reg-Ex用于过滤,解析和替换特定的字符串? (php)
我无法找到一个请求 - 表达式查找(过滤器..)下面的字符串([..]是代码,它将被过滤掉后被解析),我想过滤字符串出与换行。
<(
[..]
)>
我一直在寻找解决方案,但我没有找到解决方案。
首先:听听Dan Grossman的建议。
从我目前对您的问题的理解中,您想要得到<(
和)>
之间的逐字内容 - 没有例外,没有评论处理。
如果是的话,试试这个正则表达式
'/<\(((?:.|\s)*?)\)>/'
,你可以使用这样
preg_match_all('/<\(((?:.|\s)*?)\)>/', $yourstring, $matches)
它并不需要区分大小写,而且它确实懒惰匹配(这样你就可以将它应用于一个包含多个匹配实例的字符串)。
说明的正则表达式的:与<(
开始,以结束)>
(括号逃脱当然),在两者之间是捕获组。在其核心,我们采用普通字符.
或空格\s
(它解决了您的问题,因为换行符也是空格)。我们不想捕捉每一个字符,所以内部组不捕获 - 只是空白或字符:(?:.|\s)
。这会重复任意次数(包括零),但仅限于第一次匹配完成时:*?
用于延迟0-n。就是这样,希望它有帮助。
如果你不能编写自己的正则表达式,你确定你应该编写自己的语言,如果你想使它们比简单的字符串占位符更多,不能用正则表达式解析吗?也许你应该在你的CMS中使用别人的模板系统。降价,Smarty,什么。人们几十年来一直在编写模板语言,您不必重新发明轮子。 – 2011-01-22 10:40:48
这不像我不能写正则表达式。这就像我不能用这种格式解析字符串并在* php *格式中换行符。 – 2011-01-22 11:22:39