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" />
よろしくお願いします。
コメント(3件)
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
rouge_2008 さんの回答でやりたいことが出来ました!
ありがとうございます!
ちなみに、もう一つ同様のhtmlタグの除去についての質問をさせて頂いております。
もしお時間有りましたら、こちらにもコメントいただけると非常に助かります。