0

我正在尝试从我的 JS 函数数组中删除一个 JS 函数,但我无法为它找出正确的 regExp。

这是我要删除的文本(函数):

window.addEvent('domready', function() {

  SqueezeBox.initialize({});
  SqueezeBox.assign($$('a.modal'), {
    parse: 'rel'
  });
});

我写了这段代码来删除它:

<?php if (isset($this->functions['text/javascript'])) {
      $this->functions['text/javascript'] = preg_replace('%window\.addEvent\(\'domready\',\s*function\\(\\)\s*\\{SqueezeBox\\.initialize\\(\\{\\}\\);\s*SqueezeBox\\.assign\\(\\$\\$\\(\'a\\.modal\'\\), \\{parse: \'rel\'\\}\\);\\}\\);\s*%', '', $this->functions['text/javascript']);
      if(empty($this->functions['text/javascript'])) {
          unset($this->functions['text/javascript']);
      }
  } ?>

我的正则表达式不太好,所以我迷路了,不知道在哪里寻找模式中的错误。

4

2 回答 2

0

最后我成功了。感谢大家的帮助!

这是对我有用的最终代码。

<?php 
  if (isset($this->functions['text/javascript'])) {
      $this->functions['text/javascript'] = preg_replace('%window\.addEvent\(\'domready\',\s*function\(\)\s*{\s*SqueezeBox.initialize\(\{\}\)\;\s*SqueezeBox.assign\(\$\$\(\'a.modal\'\)\,\s*{\s*parse:\s*\'rel\'\s*}\);\s*}\);\s*%', '', $this->functions['text/javascript']);
      if(empty($this->functions['text/javascript'])) {
          unset($this->functions['text/javascript']);
      }
  } 
?>
于 2012-10-28T19:19:09.633 回答
0

正则表达式不适合解决这类问题。我建议从 php 中输出某种标志变量并将其用作 js 中的条件,如下所示:

window.addEvent('domready', function() {
if(flag){
  SqueezeBox.initialize({});
  SqueezeBox.assign($$('a.modal'), {
    parse: 'rel'
  });
}
});

然后,您可以根据您的逻辑输出var flag=true或在您的 php 中。var flag = false

于 2012-10-28T17:26:43.380 回答