php の正規表現についての質問です。


html タグの正規表現で、以下の条件を書きたいのですが、どなたか教えていただけませんか?

・先頭にスラッシュがない・又は../などの相対パスの指定がある場合、全て、 / から始まる
・http: 又は https がある場合は、/ はつけない。
・タグは、 img タグ (<img src="...") scriptタグ (script src="..") css タグ (link href="..")
に該当する。

<img src="image/aa.jpg">
<img src="../image/aa.jpg">

<img src="/image/aa.jpg">

-------------
<script type="text/javascript" src="js/aaa.js">

<script type="text/javascript" src="/js/aaa.js">

-------------
<link href="css/import.css" rel="stylesheet" type="text/css" media="all" />


<link href="/css/import.css" rel="stylesheet" type="text/css" media="all" />

よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2015/08/20 07:55:04

回答0件)

回答はまだありません

  • id:rouge_2008
    正規表現を使って置換を実行したいのでしょうか?
    HTMLタグで判定しなくても、対象のフォルダ名が決まっているなら以下のように書く事ができます。
    ※「$html」に対象のHTMLテキストが入っている場合です。

    $p = '!(src|href)="(?:\.{1,2}/)*(image|js|css)/([^"]+)"!i';
    $r = '$1="/$2/$3"';
    $newhtml = preg_replace($p, $r, $html);

    ・PHP: preg_replace - Manual
    http://php.net/manual/ja/function.preg-replace.php
  • id:kajuun
    特に正規表現にこだわっていたわけではありません、

    rouge_2008 さんの回答でやりたいことが出来ました!
    ありがとうございます!
  • id:kajuun
    http://q.hatena.ne.jp/1439521622

    ちなみに、もう一つ同様のhtmlタグの除去についての質問をさせて頂いております。
    もしお時間有りましたら、こちらにもコメントいただけると非常に助かります。

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

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

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

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