1

私が愚かであるかどうかはわかりませんが、Shape5.comで動作し、Vertex Frameworkを作成しました。問題は、Joomlaが更新を続け、これがフォーラムに数回ポップアップすることです。エラーは警告です:preg_replace()[function .preg-replace]:コンパイルに失敗しました:オフセット67で一致しない括弧

これは私たちのコードです

<?php
$script = "Hello window.addEvent('domready', function(){ new Fx.Accordion($$('div#template-sliders-116.pane-sliders > .panel > h3.pane-toggler'), $$('div#template-sliders-116.pane-sliders > .panel > div.pane-slider'), {onActive: function(toggler, i) {toggler.addClass('pane-toggler-down');toggler.removeClass('pane-toggler');i.addClass('pane-down');i.removeClass('pane-hide');Cookie.write('jpanesliders_template-sliders-116',$$('div#template-sliders-116.pane-sliders > .panel > h3').indexOf(toggler));},onBackground: function(toggler, i) {toggler.addClass('pane-toggler');toggler.removeClass('pane-toggler-down');i.addClass('pane-hide');i.removeClass('pane-down');if($$('div#template-sliders-116.pane-sliders > .panel > h3').length==$$('div#template-sliders-116.pane-sliders > .panel > h3.pane-toggler').length) Cookie.write('jpanesliders_template-sliders-116',-1);},duration: 300,opacity: false,alwaysHide: true}); });";
$script = preg_replace("/window.addEvent('domready', function(){ new Fx.Accordion(.*?)}); });/", '', $script);
echo $script;
?>

問題は、Fx.Accordionが使用するテンプレートに応じて永遠に変化することであり、これは本当に私を悩ませています。時々それはうまくいくことがあります。誰かがそれを壊すのを手伝うことができれば、私たちが見ているのとまったく同じです。

オフセット67は最後です)そしてはいiveはそれを削除しようとしましたuそれを削除しようとしましたiveは試しました:D

簡単なことだと思います笑

ありがとうデイブ

4

1 に答える 1

2

{}括弧はキャプチャ グループ化のためのPCREの特殊文字であり、バックスラッシュによるエスケープが必要です.

$script = preg_replace("/window\.addEvent\('domready', function\(\)\{ new Fx.Accordion\(.*?\)\}\); \}\);/", '', $script);

私はそれをすべて適切にエスケープしたと思います。(.*?)捕獲グループを意図したものではなかったと思います。ゼロ以上の任意の文字を意味するため?、実際には不要です。.*

$script = preg_replace("/window\.addEvent\('domready', function\(\)\{ new Fx.Accordion(.*?)\}\); \}\);/", '', $script);
//-----------------------------------------------------------------------Don't escape ^^^^^

更新:(.*?)が非貪欲な一致グループとして意図されている場合は、エスケープしないでください。

于 2012-06-18T20:54:30.297 に答える