htmlのコードをpreg_replaceを用いて
下記3つのルールにて置換したいのですが、
どのような書き方をすればいいのでしょうか?
(1)自サイトのリンクの場合
href="の後に、search.php?url=を追加、リンクをurlエンコードして、その後ろにつける。
ただし、拡張子がcssとjsのリンクは変換しない
href="http://www.hoge.com/index.php?xxxxxxxxxx"
→
href="search.php?url=http%3A%2F%2Fwww.hoge.com%2Findex.php%3Fxxxxxxxxxx"
(2)相対パスの場合
href="の後に、search.php?url=http%3A%2F%2Fwww.hoge.comを追加、
リンクをurlエンコードして、その後ろにつける。
ただし、拡張子がcssとjsのリンクは変換しない
href="/index.php?xxxxxxxx"
→
href="search.php?url=http%3A%2F%2Fwww.hoge.com%2Findex.php%3Fxxxxxxxx"
(3)他サイト(hoge.com以外)の場合は変換しない
href="http://www.maru.com/yyyyyyy"
→
変換しない
コメント(1件)
(2)の相対パスの変換が難しいので、事前に処理を行っておくと良さそうです。
以下のWEBツールで、相対パスから絶対パス(http://~)に変換できます。
http://www.plus-a.net/tools/change_url/
※「a href="XXXXX"」のようにダブルクォーテンションで囲まれている必要があります。
(シングルクォーテンションの場合、変換後が「a href=\'XXXXX\'」のように「\」でエスケープされます。)