PHPでタグ禁止の掲示板を作成しています。


その掲示板にYoutube、YahooVideoの動画を貼り付けるときのみ
その貼り付けタグを、許可したいと思います。

どのような正規表現をかけばいいでしょうか?

YouTubeタグ
<object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/57hSqLLfOv4&rel=1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/57hSqLLfOv4&rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object>

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/12/04 10:56:26
  • 終了:2007/12/11 11:00:05

回答(2件)

id:GoldenDawn No.1

GoldenDawn回答回数426ベストアンサー獲得回数812007/12/04 12:25:54

ポイント35pt

簡易的ですが

$text = <<< ENDTEXT
<div>ほ<span>げ<span>ほげ</div>
<object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/57hSqLLfOv4&rel=1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/57hSqLLfOv4&rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object>
<embed src='http://us.i1.yimg.com/cosmos.bcst.yahoo.com/player/media/swf/FLVVideoSolo.swf' flashvars='id=5232802&emailUrl=http%3A%2F%2Fvideo.yahoo.com%2Futil%2Fmail%3Fei%3DUTF-8%26vid%3D1541748%26fr%3D%26cache%3D1&imUrl=http%25253A%25252F%25252Fvideo.yahoo.com%25252Fvideo%25252Fplay%25253Fei%25253DUTF-8%252526vid%25253D1541748%252526cache%25253D1&imTitle=Rabbit%252BBites%25253A%252BInterview%252BComedian%252BTom%252BPapa&searchUrl=http://video.yahoo.com/search/video?p=&profileUrl=http://video.yahoo.com/video/profile?yid=&creatorValue=YnVuc2FuZGNob3VjaG91&vid=1541748' type='application/x-shockwave-flash' width='425' height='350'></embed>
<h1>ふが</h1>
ENDTEXT;

$result = preg_replace(
  '!((?:<object.*?http://www\.youtube\.com/v/.*?</object>)|(?:<embed.*?http://video\.yahoo\.com/video/.*?</embed>))|(<|>)!e',
  '"$1" != "" ? "$1" : ("$2" == "<" ? "&lt;" : "&gt;")',
  $text) ;
$result = str_replace("\'", "'", $result) ;

echo $result ;

http://q.hatena.ne.jp

id:tezcello No.2

tezcello回答回数459ベストアンサー獲得回数692007/12/04 12:52:40

ポイント35pt

> どのような正規表現をかけばいいでしょうか?

一つの正規表現だけで書こうと思うと、苦労ばかりで実のない事になりそうです。

なので、考え方としては

  • 投稿された本文から Youtube, YahooVideo に関するタグのみ抜き出す
  • タグを全部削除する
  • 抜き出しておいたタグを追加する

という感じでどうでしょうか?

具体的なソースが必要でしょうか? チョッと大掛かりになりそうな気が...


「タグの書いてあった場所を変えたくない」という事なら、

抜き出す時に、通常では使われないタグ(たとえば <video> なんてのは?)と置換えておき

追加するのではなく、そのタグを再度置換えるという事で対応できそうです。

タグを削除する時に、指定したタグは削除しないというオプションがありますのでそれが使えます。

http://jp.php.net/manual/ja/function.strip-tags.php


複数ある場合は元の位置に書き戻すのはチョッと面倒な感じです。

タグを置き換える際に属性値を付けておいて、それを使って書き戻すってところでしょうか?

先頭からタグを一つ一つチェックしていって Youtube, YahooVideo 以外のタグなら削除するって事でできそうにも思えますが、想定外のタグの書き方をされると失敗するような...

その掲示板では、常に投稿された本文の最後に付け加えられるとしてしまえば、手を省けます。

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

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

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

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

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