0

私はこのようなPHPの文字列を持っています

$(window).load(function(){
  $('.someclass').click(function () {
    $(this).text("clicked");
  });
});

私が欲しいのは - 文字列に含まれる$(window).load(function(){場合、これと最後の中括弧});を空の文字列に置き換えます""

しかし、$(window).load(function(){存在しない場合は何もしません。

これが私が試したことです:

if(strpos($str,"$(window).load(function(){") == -1){
  // do nothing
}
else{
     str_replace("$(window).load(function(){","",$str);
     // how do i replace the last }); with ""
}
4

5 に答える 5

1

コードがそのようにうまくインデントされている場合、これはうまくいくかもしれません:

$str = <<<EOM
$(window).load(function(){
  $('.someclass').click(function () {
    $(this).text("clicked");
  });
});
EOM;

$start = preg_quote('$(window).load(function(){');
$end = preg_quote('});');

$new = preg_replace("/^$start\s*(.*?)^$end/ms", '$1', $str);

print_r($new);
于 2013-03-28T14:25:57.533 に答える
1

}); を保証できる場合は、これに正規表現が必要になります。最後になります。もしそうなら:

$str = preg_replace("#\$\(window\)\.load\(function\(\) \{(.*)\}\);#is","",trim($str));

トリックを行う必要があります。

}); を保証できない場合 置き換える必要があるのは最後のオカレンスになるため、コードを調べて中かっこを数える必要があります。悲しいことに、他の方法はありません:-(

于 2013-03-28T14:20:57.027 に答える
0

(window).loadをテストし、これを追加するだけでうまくいくと思います:

str_replace('$(window).load', "var functionOnLoad = ", $str);

実行したい場合は、この関数への呼び出しを追加することを忘れないでください。次のように考えてください:

str_replace('</script>', "functionOnLoad();</script>", $str);
于 2013-03-28T14:34:16.317 に答える
0
$str = substr($str, 0, strlen($str) - 4);

これにより、文字列の最後の 3 文字が削除されます。

于 2013-03-28T14:21:56.050 に答える
0

strrposで最後に出現した位置を見つけますか? 次に、その時点から制限 1 で str_replace を実行しますか? 不正なコードを作成していないことを確認するために、JSlint などの外部呼び出しで変更された文字列をチェックする必要があります。

于 2013-03-28T14:22:41.480 に答える