html をエコーアウトすると、ブラウザーによってレンダリングされます。html のソースをエコーアウトしたい場合は、次を使用します: htmlentites()
echo htmlentites($final);
それがあなたの後のものではない場合は、説明してください:But it does not display it correctly.
また、ユーザーが入力した html を出力しないでください。または、スクリプトが設計上 XSS に開かれていることを確認してください。コードからビデオの youtube ID だけを取り出して、そこから独自の埋め込みコードを作成する必要はありません!empty($embed)
。
これを行う方法は次のとおりです。
<?php
if($_SERVER['REQUEST_METHOD']=='POST'){
if(!empty($_POST['embed']) && !empty($_POST['date'])){
if(preg_match('#http://www.youtube.com/embed/([a-zA-Z0-9_-]+)\"#',$_POST['embed'],$match)==true){
$embed = <<<EMBEDCODE
<iframe width="640" height="360"
src="http://www.youtube.com/embed/{$match[1]}?feature=player_embedded"
frameborder="0" allowfullscreen>
</iframe>
EMBEDCODE;
}else{
$embed = "Not a real youtube embedcode! Try Again";
}
}else{
$embed = "Enter youtube embedcode.";
}
}
?>
<h1>Youtube Yada</h1>
<form method="POST" action="">
<p>Embedcode:<textarea rows="9" name="embed" cols="44"></textarea></p>
<p>Date:<input type="text" name="date" value="<?php echo date("F j, Y, g:i a");?>" size="20"></p>
<p><input type="submit" value="Submit" name="B1"></p>
</form>
<?php echo(isset($embed)?$embed:null);?>
テスト済み:
<iframe width="560" height="315" src="http://www.youtube.com/embed/GasAmUfvXJs" frameborder="0" allowfullscreen></iframe>