2011-04-18 50 views
1

我已经在我一直在努力的语法突出显示中遇到障碍。 PHP支持包含在""''之间的字符串。与C#不同,C#通过仅允许""进行控制,选项@用于自动转义字符串。PHP:确定正则表达式的重要性

如果我有两个字符串,像这样:

$code = "print(\"<div class='test'>content?div><div class='test'>content</div>\");"; 

如果我回声$代码,我将获得:

print("<div class='test'>content?div><div class='test'>content</div>"); 

这里是我的问题。当我在开始报价和结束报价之间解析内容时,我使用剪贴板工具(仅复制粘贴)删除了以后要放回的内容(所以我不会突出显示)。 我有它设置解析使用正则表达式之间''第一之间的内容。最终的结果(包括字符串类型后)看起来像这样:

print("<div class=>content?div><div class=>content</div>"); 

如何修改我的正则表达式来回头看(从开始)和前锋(从端)寻找最上面的字符串分隔符('")。这很难解释,希望有人得到它,否则我只能忍受它。

回答

2

这对于正则表达式来说是不可能的;它们不足以处理递归。他们无法正确关闭嵌套圆括号,他们无法正确关闭嵌套引号。您至少需要一个下推自动机(或上下文无关语言)来实现这种功能。