phpのpreg_replaceについて教えてください。


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人5回まで
  • 登録:
  • 終了:2011/06/17 15:00:03

回答0件)

回答はまだありません

  • id:rouge_2008
    PHPでスクリプトを作るのが目的なのではなくて、リンクの変換処理を行う事が目的なのでしたら、他のツールを使用してはいかがでしょうか?
    (2)の相対パスの変換が難しいので、事前に処理を行っておくと良さそうです。
    以下のWEBツールで、相対パスから絶対パス(http://~)に変換できます。
    http://www.plus-a.net/tools/change_url/
    ※「a href="XXXXX"」のようにダブルクォーテンションで囲まれている必要があります。
    (シングルクォーテンションの場合、変換後が「a href=\'XXXXX\'」のように「\」でエスケープされます。)

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません