BashスクリプトからPHPファイル(正確にはPHTMLファイルですが、それでも有効なPHPファイルです)にいくつかの変更を加える必要があります。私の当初の考えは、正規表現でsedまたは同様のユーティリティを使用することでしたが、他のHTML解析の質問についてここでいくつかの回答を読むと、より良い解決策があるようです。
正規表現で直面していた問題は、一致させたい文字列(src|href|action)=["']/
が<?php ?>
タグ内にあるかどうかを検出するためのサポートがないことでした。そのため、一致がPHPタグ内にある場合は文字列の連結を実行するか、新しい文字列を追加することができました。 PHPタグはそうではないはずです。例えば:
(1) <img id="icon-loader-small" src="/css/images/loader-small.gif" style="vertical-align:middle; display:none;"/>
(2) <li><span class="name"><?php echo $this->loggedInAs()?></span> | <a href="/Login/logout">Logout</a></li>
(3) <?php echo ($watched_dir->getExistsFlag())?"":"<span class='ui-icon-alert'><img src='/css/images/warning-icon.png'></span>"?><span><?php echo $watched_dir->getDirectory();?></span></span><span class="ui-icon ui-icon-close"></span>
(EDIT: 4) <form method="post" action="/Preference/stream-setting" enctype="application/x-www-form-urlencoded" onsubmit="return confirm('<?php echo $this->confirm_pypo_restart_text ?>');">
(1)にはsrc="/css
、があり、PHPタグにはないので、それをにしたいと思いますsrc="<?php echo $baseUrl?>/css
。(2)にはPHPタグがありますが、の周りにないhref="/Login
ので、にもなりhref="<?php echo $baseUrl?>/Login
ます。残念ながら、(3)にはPHPタグsrc='/css
が含まれています(エコーされた文字列です)。"
これはPHPコードでも引用されているため、変更もそれを反映する必要があります。最終的な結果は次のようになりますsrc='".$baseUrl."/css
。
HTMLおよびPHPファイルに対する他のすべての変更は、正規表現を使用して行われました(私は知っています、私は知っています...)。正規表現が特定のパターンを除くすべてのマッチングをサポートできる場合、たとえば、[^(<\?php)(\?>)]*
この部分を飛んでいきます。残念ながら、これはタイプ2の文法領域のようです。だから-私は何を使うべきですか?理想的には、GNUスイートとともにデフォルトでインストールする必要がありますが、PHP自体や他のインタープリターなどの他のツールも問題ありません。もちろん、誰かが上記の例で機能する正規表現を構築できれば、それは素晴らしいことです。
編集:(4)は厄介な一致であり、ほとんどの正規表現は失敗します。