preg_replace を使用して、HTML サイドワイドのアンパサンドを置き換えようとしていますが、問題は、インライン javascript && または ?page=test&id=1 のような javascript url を壊すことです。
今、私はこのコードを持っています
$amp_replace = array();
$amp_replace[0] = '/(?<=\s)&(?!&)(?!#?[a-z0-9]+;)/';
$amp_replace[1] = '/(?<!&)&(?=\s)/';
$skin = preg_replace($amp_replace, '&', $skin);
左または右にスペースがある場合、アンパサンドを置き換えます。2 つのアンパサンドが連続している場合 (javascript の場合)、または html エンティティが続く場合は置き換えないでください。
しかし、ここではかなり不必要なロジックだと思います。また、test&test のような場合は、アンパサンドを置き換えません。
私は正規表現の専門家ではないので、これにはかなりの時間がかかりました。そのため、ここでもう一度助けを求めることにしました。
JavaScript スクリプト タグ内にない場合は、単にすべてのアンパサンドを置き換える方がよいでしょうか? 私はすでにそれを試しましたが、本当の成功はありません
それをアーカイブする方法を知っている人はいますか?ありがとうございました