phpで、strig_tagsでタグ除去を試みました。

http://q.hatena.ne.jp/1185604181

うまくいったのですが、
javascriptの「タグ」だけが除去され、
スクリプトの部分が残ってしまいます。

例えば、下記の場合、

<script language="javascript" type="text/javascript">
function a(bb,cc,dd){
...
}
</script>

タグ以外の

function a(bb,cc,dd){
...
}

は除去されずに残ってしまいます。
この様子だと、恐らくCSSの内部記述しているのも残りそうな予感です。

これらの除去方法はあるのでしょうか?


特定のhtmlからタグを除去し、
特定のタグ(例えば<A><B>を属性つき)を残す、
ということをstrip_tagsで試みています。

特にstrip_tagsにこだわりがあるわけではないので他の方法も含めて、
phpで実現のために参考になるURLや、
function形式で参考コードをお願いします。

回答の条件
  • 1人5回まで
  • 登録:2007/07/30 00:11:43
  • 終了:2007/07/30 15:03:29

ベストアンサー

id:GEN111 No.1

GEN111回答回数472ベストアンサー獲得回数582007/07/30 01:00:11

ポイント50pt

例えばこんなのを strip_tags を呼ぶ前に噛ませるとかですかね。

function remove_specific_elements($html) {
  $html = preg_replace('!<style.*?>.*?</style.*?>!is', '', $html) ;
  $html = preg_replace('!<script.*?>.*?</script.*?>!is', '', $html) ;
  return $html ;
}

$str = '
<style type="text/css">
div {color : black}
</style>
<div>Hello</div>
<script type="text/javascript">
alert("hoge");
</script>
<p>World</p>
<script type="text/javascript">
document.write("fuga");
</script>
';

echo strip_tags(remove_specific_elements($str)) ;

$str は HTML としては謎ですが、まあサンプルなので。

id:onigirin

どうもありがとうございます。

試してみたところ、ズバリ解決できました!

どうもありがとうございました。

正規表現の置換、使えますね。

2007/07/30 15:02:36

その他の回答(1件)

id:GEN111 No.1

GEN111回答回数472ベストアンサー獲得回数582007/07/30 01:00:11ここでベストアンサー

ポイント50pt

例えばこんなのを strip_tags を呼ぶ前に噛ませるとかですかね。

function remove_specific_elements($html) {
  $html = preg_replace('!<style.*?>.*?</style.*?>!is', '', $html) ;
  $html = preg_replace('!<script.*?>.*?</script.*?>!is', '', $html) ;
  return $html ;
}

$str = '
<style type="text/css">
div {color : black}
</style>
<div>Hello</div>
<script type="text/javascript">
alert("hoge");
</script>
<p>World</p>
<script type="text/javascript">
document.write("fuga");
</script>
';

echo strip_tags(remove_specific_elements($str)) ;

$str は HTML としては謎ですが、まあサンプルなので。

id:onigirin

どうもありがとうございます。

試してみたところ、ズバリ解決できました!

どうもありがとうございました。

正規表現の置換、使えますね。

2007/07/30 15:02:36
id:tenman No.2

tenman回答回数13ベストアンサー獲得回数02007/07/30 01:14:34

ポイント20pt

http://phpspot.net/php/man/php/function.preg-replace.html

の例とか参考になりませんか

id:onigirin

どうもありがとうございます。

正規表現での置換ですね。

いろいろと重宝しそうです。

2007/07/30 15:02:49

コメントはまだありません

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません