I'm trying to remove a JS function from my JS functions array but I couldn't figure out the right regExp for it.
this is the text(function) I want to remove :
window.addEvent('domready', function() {
SqueezeBox.initialize({});
SqueezeBox.assign($$('a.modal'), {
parse: 'rel'
});
});
and I wrote this code for remove it:
<?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']);
}
} ?>
I'm not so good in regexp so I'm lost and don't know where look for error in the pattern.
Regexes are poorly adapted to solving this sort of problem. I would recommend outputting some sort of flag variable from the php and using it as a condition in your js, which would go something like this:
window.addEvent('domready', function() {
if(flag){
SqueezeBox.initialize({});
SqueezeBox.assign($$('a.modal'), {
parse: 'rel'
});
}
});
You can then output var flag=true
or var flag = false
in your php, depending on your logic.
Finally I made it. Thanks to everyone for help!
This is final code which worked for me.
<?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']);
}
}
?>