我正在尝试使用正则表达式将 ColdFusion 网站转换为 PHP。我还没有找到可以做的事情,所以我自己做。
幸运的是,coldfusion 网站在编程方面是基本的,正则表达式可以完成这项工作。
但是,我被困在某个地方。我怎样才能提取这样的东西?
- <cfset mailfrom="嘿">
- <cfset mailfrom='嘿'>
- <cfset mailfrom=hey>
- <cfset mailfrom = 嘿>
- <cfset mailfrom="<hey>">
我确实尝试了以下模式:
preg_match_all('/<cfset (.*)( )=(| |\'|")(.*)(|\'|")>/iU', $this->Content, $customTags, PREG_SET_ORDER);
它有时有效,有时无效。我的 ColdFusion 代码可能在 1 行或 1000 行。所以有时你会看到这样的东西<cfset mailfrom="hey"><cfset fdsfsd="3333">
一旦我知道完整的字符串 ( <cfset mailfrom="hey">
) 以及用 ( $mailfrom = "hey";
) 替换的内容,我就可以毫无问题地解析它,所以这意味着正则表达式必须至少给我变量名称和值。
谢谢。
编辑 :
我用这个:
preg_match_all('/<cfparam\s*([^>]*)\s*\/?>/i', $this->Content, $customTags, PREG_SET_ORDER);
匹配 <cfparam name="" default="">。我想我可以用同样的方式做,但是 parse(. ) = (. ) (Var = value)
但这里的问题是这个正则表达式不能匹配值区域中的 < 和 >。