我的代码
preg_match_all('/\{([\w]+)(\s.*)?[^\}]\}(.*)\{\/\w+[^\}]\}/', $nbody, $matches );我的模板
rtrim: Beginning Text{rtrim} String {/rtrim}Surrounding Text
camelize: {camelize}Camelize Some Text Like A MediaWiki Title{/camelize}
Date Modifiers
date: {date format="M/d/Y"}June 14th 1965{/date}
iso date: {date format="c"}1310036802{/date}
timestamp date: {date format="c"}June 14th 1965{/date}
time: {time}{/time}我正在尝试让我的正则表达式工作,这样我就可以捕获{date format=""}示例中看到的属性。使用上面的模式,我已经完成了99%,但它吃掉了没有属性的{tag}的最后一个字符。
...
[11] => rtri
[12] => cameliz
[13] => date
[14] => date
...以及属性匹配的最后一个“
...
[13] => format="M/d/Y
[14] => format="c
[15] => format="c
...任何帮助都将不胜感激!
发布于 2011-07-07 18:52:17
这个expr可能更适合
~{(\w+)(.*?)}(.*?){/\\1}~si发布于 2011-07-07 18:50:20
为了防止它“吃掉”这些字符,删除随机的[^\}]。但我猜你的意思是在他们的帮助下写一个更好的正则表达式,可能是这样的:
/\{(\w+) (?: \s+(\S[^}]*))? } (.*?) \{\/ \1 }/x(在使用前正确引用和转义它。)
这应该会工作得更好。在嵌套的标签上仍然会失败(但如果你有,那么你正在用正则表达式解析超文本标记语言),如果标签的内容可以有} (如果需要可以修复),也不会工作。
https://stackoverflow.com/questions/6609356
复制相似问题