人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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>

●質問者: wqwqwqwq
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:PHP YouTube タグ 作成 動画
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● GoldenDawn
●35ポイント

簡易的ですが

$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


2 ● tezcello
●35ポイント

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

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

なので、考え方としては

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

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


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

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

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

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

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


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

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ