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

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

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

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

Q&A

1回答

1543閲覧

確認ページでのphp

hosayuki

総合スコア16

PHP

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

0グッド

0クリップ

投稿2018/09/28 13:15

必要な個所のみ書きます。
フォーム:

<table class="formTable"> <tr> <th>Email</th> <td><input size="30" type="text" name="Email" requied/></td> <td><input size="30" type="hidden" name="単語数" /></td> </tr> <tr> <th>原文</th> <td><textarea name="原文" rows="4" cols="40"></textarea></td></tr> </table> 確認ページ:itemの意味と連結項目の目的が分かりません。 <pre> <?php if(isset($POST['genbun']){ //確認画面の入力内容出力用関数 function confirmOutput($arr){ global $hankaku,$hankaku_array; $html = ''; foreach($arr as $key => $val) { $out = ''; if(is_array($val)){ //次を追加してもよいですか ``` $str=$_POST("原文") $count=str_word_count($str); $count=$val[1] ``` foreach($val as $key02 => $item){

//連結項目の処理
if(is_array($item)){
$out .= connect2val($item);
}else{
$out .= $item . ', ';
}
}
$out = rtrim($out,', ');

}else{ $out = $val; }//チェックボックス(配列)追記ここまで
if(get_magic_quotes_gpc()) { $out = stripslashes($out); }
$out = nl2br(h($out));//※追記 改行コードを<br>タグに変換
$key = h($key);

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

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

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

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

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

Takumiboo

2018/09/28 15:30

最低限、質問記入欄の上にある「<code>」を使って、ソースコードを整形してください
m.ts10806

2018/09/28 21:34

何度も書いているかと思いますが、質問は編集することができます。わざわざ回答に書いたり新しい質問を立てる必要はありません。要件が同じであれば質問を1つに集約して解決まで対応してください。同件の質問は運営に削除依頼を出しておいてください。あと、ヘルプを一通り読んでからご利用ください。 https://teratail.com/help (特に「質問するときのヒント」は必読です)
guest

回答1

0

次を追加してもよいですか

が課題だと理解して回答します。
追加しても良いです。あなたは自由にPHPを書くことができる。それがエラーや警告なく、また期待通りに動くかどうかは、書き方による。

警告がでるかについて

  • $_POST("原文")はエラーになると予想します

$_POSTは予約された変数であり関数ではない(callableではない)ので()を付けても関数を呼びだすことはできないと思います。まあPHPはすごいので、抜き出した以外のところで手をうってればできるのかもしれないですが。
また、この行およびこの2行下で;がなくfatalエラーになると思いますので、正常な描画は期待できないでしょう。

  • $countについて

PHP

1$str=$_POST["原文"] 2$count=str_word_count($str);

までで、原文として、スペース区切りの文字列が入力されればカウントできる(期待通りの動きをしている)と思います

  • $countの無意味さについて

上記にもかかわらず

PHP

1$count=$val[1]

としているので、せっかくカウントした単語数は上書きされます。それが期待した動作ならよいのですが。
先に述べたように;がなくエラーですし、$valは配列であることは検証済みですが2個以上の要素を持つかは検証できていないので、undefined index 1が発生する可能性があります。
また$valが2個以上の要素を持つ配列であったとしても、$valはその後の処理でカンマ連結を行っているので、なぜここで$countに後で表示文言となるものをあらかじめ確保したのか理解に苦しみます。
また$countは、$outに連結されていませんので、何を代入したところで、画面に表示されることはありません。

投稿2018/09/28 13:55

papinianus

総合スコア12705

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

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

papinianus

2018/09/28 14:01

$out = nl2br(h($out));//※追記 改行コードを<br>タグに変換 の直前のあたりで、 $out .= "単語数は、".str_word_count($_POST["原文"])."個"; を入れれば出せると思いますが、もうこのコードは忘れたほうがいい。あなたのやりたいことに全くもって合っているとは思えない。全くもって無駄な苦労をしているのではないでしょうか?
hosayuki

2018/09/29 22:43

$out .= "単語数 において、outとはどういう意味ですか また「.=」の意味がわかりません
hosayuki

2018/09/30 13:12

papiniianus さんへ >$out .= "単語数は、".str_word_count($_POST["原文"])."個"; を挿入するとすべての項目に「単語数はxx個」と追加表示されました。
papinianus

2018/10/01 01:44

$outは変数です。出力outputに使うからそういう名前なのでしょう。 .=は.と=の組み合わせです。.は文字連結。PHPの基本的な構文は何かしらで調べてください 前の質問を読み砕けば、すべての項目で繰り返しが起こらないようにできるとは思いますが、ここに上げられたコード部分だと全項目でリピートするのは不可避です。 言葉だけの説明となりますが、$htmlの次の行のforeachの閉じカッコのあとで同じことをすれば、一度しか追加されないようにすることは可能だと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問