質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

3739閲覧

PHPの変数をHTMLのフォームの中に出力したい

DaikiOgawa

総合スコア15

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2015/11/28 21:21

フォーム(textaarea)の中にPHPの変数$value_matomeを出力したいのですが、うまくいきません。
フォームの外でechoしてあげると表示されるのですが。
どうすればフォームの中に入れることができるのでしょうか。

環境:PHP5.5

PHP

1【index.php】 2 (略) 3<?php include "function.php"; ?> 4//テキストをWEBサイトから取得し、加工 5<div><?php get_text($param) ?></div> 6//加工した文章をフォームの中に表示 7<textarea name="example" cols="50" rows="10"> 8 <?php echo $value_matome; ?> 9</textarea> 10 (略)

PHP

1function.php】 2 () 3function get_text($param){ 4//データをWEBサイトから取得し、加工 5//加工したデータをtext_arrayに収納 6 () 7 //arrayに収納したデータを変数value_matomeに収納 8 $value_matome = ""; 9 foreach($text_array as $value){ 10 $value_matome .= $value; 11 $value_matome .= "<br><br>"; 12 } 13 //value_matomeを返す 14 return $value_matome; 15}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

php

1<?php include "function.php"; ?> 2//テキストをWEBサイトから取得し、加工 3<textarea name="example" cols="50" rows="10"> 4 <?php echo get_text($param); ?> 5</textarea>

php

1function get_subtitle($param) 2{ 34 return $value_matome; 5} 6 7$param = 'https://www.youtube.com/watch?v=***********'; 8$res = get_subtitle($param); 9var_dump($res);

を実行すると、以下のような結果が返る。関数の中で、<transcript><text start="92.618" dur="2.491">こういう部分を取り除かないと、意図した動きにはなりませんよね。

string(77314) "><transcript><text start="92.618" dur="2.491">[Yelling]</text<br><br>><text start="95.188" dur="1.991">Ho! Ho! Ho!</text<br><br>><text start="110.903" dur="3.128">[Woman Narrating] It&amp;#39;s been almost ayear since I left my home in the East...</text<br><br>><text start="114.107" dur="2.833">and traveled west with the man I loved.</text<br><br>><text start="117.009" dur="2.161">I was positive about my future...</text<br><br>><text start="119.245" dur="2.093">full of hopes and dreams.</text<br><br>><text "...

そもそも、字幕データはXMLで帰ってくるようなので SimpleXML でも使う方がコードは美しいでしょう。simple_html_dom.phpの出番ではない気がする。

xml

1<transcript><text start="92.618" dur="2.491">[Yelling]</text><text start="95.188" dur="1.991">Ho! Ho! Ho!</text><text start="110.903" dur="3.128">[Woman Narrating] It&#39;s been almost ayear 2since I left my home in the East...</text><text start="114.107" dur="2.833">and traveled west 3with the man I loved.</text><text start="117.009" dur="2.161">I was positive 4about my future...</text><text start="119.245" dur="2.093">full of hopes and dreams.</text><text start="121.414" dur="1.934">Our eyes were always 5on the end of the trail...</text><text start="123.416" dur="3.959">as if life as I envisioned it 6would be just that.</text><text start="127.453" dur="4.164">In fact, if someone had told me 7that I would find myself here today...</text>

投稿2015/11/28 21:25

編集2015/11/28 22:54
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DaikiOgawa

2015/11/28 21:38 編集

ご回答ありがとうございます。 最初に申すべきだったのですが、<?php echo get_text($param); ?>をフォームのなかに入れると正規表現で文章を取り出す前のWEBサイト上のデータが出力されてしまうのです。 どこが間違っているのでしょう…。 ```PHP 【function.php】 function get_text($param){        (略)  preg_match_all("!\>(.*?)\<\/text!s",$file,$match);  $text_array = $match[0];  $value_matome = "";  foreach($text_array as $value){   $value_matome .= $value;   $value_matome .= "<br><br>";  } return $value_matome; } ```
退会済みユーザー

退会済みユーザー

2015/11/28 22:00 編集

$param にどういう値が入ってくるのか書いてください。 初めに書いた回答で意図した動きにならないということであれば、そもそも、get_text() が意図通りに動いていないということです。(あなたの意図は知る由はありませんが。) preg_match_all("!\>(.*?)\<\/text!s",$file,$match); 略 <= ここで略しちゃ回答できんし… とはいえ > 正規表現で文章を取り出す前のWEBサイト上のデータが出力されてしまう この認識が間違っている気がします。 単純にHTMLのタグを除去していないから <div></div>の中に書いたときにタグが見えないだけでしょ。
DaikiOgawa

2015/11/28 22:16

ご回答ありがとうございます。 $paramにはYouTubeの動画のURLがはいります。 すみません、こういう場にコードをすべてさらけ出すのに抵抗があって。 以下に全体のものをはらせていただいたので、ご確認いただければと思います。 function get_textと表記していたものは本来function get_subtitleです。 【page_video_view.php】 <!-- ボディー --> <body> <!-- 左側の動画エリア --> <div id="video_area" class="col-sm-6"> <!-- URLフォーム --> <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post"> 動画のURL:<input class="searchbar" type="text" name="movie_url"> <input type="submit" class="btn btn-default btn-xs" name="submit" value="開く"> </form> <br> <!-- フォームからURLを取得し、動画を表示 --> <?php $param = $_POST["movie_url"] ?> <?php include "function.php"; ?> <div><?php echo createvideotag($param) ?></div> <div><?php get_subtitle($param) ?></div> <button type="button" class="btn btn-default btn-xs">字幕ビューに切り替え</button> <textarea name="example" cols="50" rows="10"> <?php echo get_subtitle($param); ?> </textarea> </div> <!-- 右側のテキストエリア --> <div id="text_area" class="col-sm-6"> <textarea class="dictation_area" cols="" rows=""></textarea> <button type="button" class="btn btn-default btn-xs">保存</button> <button type="button" class="btn btn-default btn-xs">登録</button> </div> </body> 【fuction.php】 function createvideotag($param) { //URLがyoutubeのURLであるかをチェック if(preg_match('#https?://www.youtube.com/.*#i',$param,$matches)){ //parse_urlでhttps://www.youtube.com/watch以下のパラメータを取得 $parse_url = parse_url($param); // 動画IDを取得 if (preg_match('#v=([-\w]{11})#i', $parse_url['query'], $v_matches)) { $video_id = $v_matches[1]; } else { // 万が一動画のIDの存在しないURLだった場合は埋め込みコードを生成しない。 return false; } $v_param = ''; // パラメータにt=XXmXXsがあった時の埋め込みコード用パラメータ設定 // t=〜〜の部分を抽出する正規表現は記述を誤るとlist=〜〜の部分を抽出してしまうので注意 if (preg_match('#t=([0-9ms]+)#i', $parse_url['query'], $t_maches)) { $time = 0; if (preg_match('#(\d+)m#i', $t_maches[1], $minute)) { // iframeでは正の整数のみ有効なのでt=XXmXXsとなっている場合は整形する必要がある。 $time = $minute[1]*60; } if (preg_match('#(\d+)s#i', $t_maches[1], $second)) { $time = $time+$second[1]; } if (!preg_match('#(\d+)m#i', $t_maches[1]) && !preg_match('#(\d+)s#i', $t_maches[1])) { // t=(整数)の場合はそのままの値をセット ※秒数になる $time = $t_maches[1]; } $v_param .= '?start=' . $time; } // パラメータにlist=XXXXがあった時の埋め込みコード用パラメータ設定 if (preg_match('#list=([-\w]+)#i', $parse_url['query'], $l_maches)) { if (!empty($v_param)) { // $v_paramが既にセットされていたらそれに続ける $v_param .= '&list=' . $l_maches[1]; } else { // $v_paramが既にセットされていなかったら先頭のパラメータとしてセット $v_param .= '?list=' . $l_maches[1]; } } // 埋め込みコードを返す return '<iframe width="600" height="338" src="https://www.youtube.com/embed/' . $video_id . $v_param . '" frameborder="0" allowfullscreen></iframe>'; } // パラメータが不正(youtubeのURLではない)ときは埋め込みコードを生成しない。 return false; } function get_subtitle($param){ //URLがyoutubeのURLであるかをチェック if(preg_match('#https?://www.youtube.com/.*#i',$param,$matches)){ //parse_urlでhttps://www.youtube.com/watch以下のパラメータを取得 $parse_url = parse_url($param); // 動画IDを取得 if (preg_match('#v=([-\w]{11})#i', $parse_url['query'], $v_matches)) { $video_id = $v_matches[1]; } else { // 万が一動画のIDの存在しないURLだった場合は埋め込みコードを生成しない。 return false; } // 動画の字幕を取得するためのURLを生成 $video_sub_url = "http://video.google.com/timedtext?"."lang=en&v=".$video_id; //return $video_sub_url; //simplehtml読み込み require_once('simple_html_dom.php'); // 動画字幕を取得しに行く $fp = fopen($video_sub_url, "r"); if (!is_resource($fp)) { die("can't open file"); } else{ //echo("open file"); } $file = file_get_contents($video_sub_url); //字幕ファイルの中から本文だけ摘出 preg_match_all("!\>(.*?)\<\/text!s",$file,$match); $text_array = $match[0]; //$subtext_print = $match[0]; //return $subtext_print; //var_dump(current(array_slice($text_array, $n, 1, true))); /* for($i = 0; $i < count($text_array); $i++){ echo $text_array[$i] . "<br>\n"; } */ $value_matome = ""; foreach($text_array as $value){ $value_matome .= $value; $value_matome .= "<br><br>"; //echo $value; //echo "<br><br>"; } return $value_matome; } }
退会済みユーザー

退会済みユーザー

2015/11/28 22:36 編集

具体的に、「字幕が入っている動画」のURLをサンプルでください。 おなじURLで試さんと検証できんわ。 > ういう場にコードをすべてさらけ出すのに抵抗があって わからんでもないけど、無駄に回答しようとする人をイラつかせるだけです。 授業料を払わずに教わろうというのだから、それぐらいは覚悟せんとな。
退会済みユーザー

退会済みユーザー

2015/11/28 22:54

回答に追記しました
DaikiOgawa

2015/11/28 23:15

ありがとうございます。 SimpleXMLというのは使ったことがないので、関数を削除する方法について学んできます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問