在ColdFusion中查找和替换

joj*_*ojo 0 coldfusion

这是困扰我的代码.我需要找到代码并替换为Fancybox代码,但它抛出一个错误:win未定义

替换mywin值

<cfsavecontent variable="x">
mywin = window.open (url,"win",'toolbar=yes,location=yes,resizable=yes,copyhistory=yes,scrollbars=ye?s,width=878,height=810'); 
</cfsavecontent>
Run Code Online (Sandbox Code Playgroud)

对此:

mywin = $.fancybox('href' :url,'width': '500');
Run Code Online (Sandbox Code Playgroud)

我这样想

<cfset a  = Replace(x,"mywin = window.open (url,"win",'toolbar=yes,location=yes,resizable=yes,copyhistory=yes,scrollbars=yes,width=878,height=810');","$.fancybox()","one")>
Run Code Online (Sandbox Code Playgroud)

更新代码:

<cfsavecontent variable="foo">
      function setmycode() {
      url = "http://myurl.com?thestep=9&sortBy=1&sortOrder=1";
      mywin = window.open (url,"win",'toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,resizable=yes,copyhistory=yes,scrollbars=yes,width=878,height=810');
    mywin.focus();
    return false;
    }
  </cfsavecontent>  
  <cfset a  = Replace(foo,"mywin = window.open (url,""win"",'toolbar=yes,location=yes,resizable=yes,copyhistory=yes,scrollbars=yes,width=878,height=810');","$.fancybox()","one")>
  <cfdump var="#a#">
Run Code Online (Sandbox Code Playgroud)

Ada*_*ron 6

你需要注意你的代码.甚至在你的问题中突出显示的语法实际上都指出了错误!

如果一个错误说明了"胜利",并且文本"胜利"被一个语法高亮显示器突出显示......那么这就是错误所在的地方.这就是你应该仔细检查的内容.

你有一个用双引号分隔的字符串,但字符串本身有双引号:

mywin = window.open (url,"win",'toolbar=yes,location=yes,resizable=yes,copyhistory=yes,scrollbars=yes,width=878,height=810');
Run Code Online (Sandbox Code Playgroud)

因此CF解析器将第一个双引号"win"视为字符串的结尾.然后接下来就是垃圾(并且会产生语法错误,如您所见).

如果你的字符串中包含字符串分隔符,则需要将它们转义.在CFML中,人们通过将它们加倍来实现这一点,例如:( """ 特殊字符 ")

所以你的字符串变成:

mywin = window.open (url,""win"",'toolbar=yes,location=yes,resizable=yes,copyhistory=yes,scrollbars=yes,width=878,height=810');
Run Code Online (Sandbox Code Playgroud)

当分隔时,CF现在可以解析:

<cfset a  = Replace(x,"mywin = window.open (url,""win"",'toolbar=yes,location=yes,resizable=yes,copyhistory=yes,scrollbars=yes,width=878,height=810');","$.fancybox()","one")>
Run Code Online (Sandbox Code Playgroud)