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 からある種のフラグ変数を出力し、それを js の条件として使用することをお勧めします。これは次のようになります。

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

その後、ロジックに応じて、php で出力することができvar flag=trueます。var flag = false

于 2012-10-28T17:26:43.380 に答える
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 に答える