ベストアンサー フォームの入力値を登録語に置換して表示する方法を教えてください 2009/04/08 19:44 PHPでフォームに入力された漢字を一字ずつ 別ファイルに用意した登録文字に置換して表示するには どのようにしたらよいでしょうか。 (サンプルを提示できなくてすみません) みんなの回答 (3) 専門家の回答 質問者が選んだベストアンサー ベストアンサー manimani2 ベストアンサー率70% (12/17) 2009/04/09 17:19 回答No.1 こんにちは。 *「別ファイル」というのがどんな形式なのかによって、その部分のコードは変わりますし、ちょっと質問の意味合いもわかりにくい所がありますので参考程度にご覧ください。 例えば別ファイルというのが何でもよく、「この文字が入っていたら、この文字へ置き換える」というのが、予めpupuaさんの中で決まっているのでしたら、「,(カンマ)」で変換前と変換後の文字を区切ったCSVファイルを用意し、 [moji_data.csv] 夏,冬 甘,辛 高,低 ・ ・ ・ というように記載していきます。(上の例だと最終的に「『夏』という字があったら、『冬』に置き換える」「『甘』という字があったら、『辛』に置き換える」となるように考えています。) そして、コードとしては.... [okikae.php] <?php //フォームからのデータを受け取ります。 $str = $_POST['str']; //「別ファイル」(ここではCSVと仮定)の読み込み準備 $filename = "./moji.csv"; $row=0; $data = array(); //CSVファイルの中身を読みながら、該当する漢字が含まれていれば置き換えていく。 $handle = fopen($filename, "r"); while (($tmp = fgetcsv($handle, 1000, ",")) !== FALSE) { $data[$row]["before"] = $tmp[0]; $data[$row]["after"] = $tmp[1]; $str = mb_ereg_replace($data[$row]["before"], $data[$row]["after"], $str); } //結果を表示 print $str; ?> このCSVの内容でいくと、フォームから「夏は甘い」と打ち込むと、結果は「冬は辛い」と表示されるはずです。お試しあれ。 質問者 お礼 2009/04/09 19:41 お答えありがとうございます。 投稿後、丸投げは×ということを知りあきらめていました。 (すみませんでした) さっそく、フォームページを作成し、 <form action="./okikae.php" method="post"> <input type="text"> <input type="submit" value="送信"> </form> からアクセスすると、正規表現がなんとか・・のWarningが表示されます↓。 Warning: mb_ereg_replace() [function.mb-ereg-replace]: mbregex compile err: premature end of regular expression in /・・ 日本語も英字も同じ結果です。 mb_ereg_replace()について検索してみたのですが解決できませんでした。 あと少しで望んでいたことができそうなので、できればアドバイスをお願いします。 サーバー(xrea)のせいでしょうか? 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 その他の回答 (2) manimani2 ベストアンサー率70% (12/17) 2009/04/10 15:43 回答No.3 念のためという意味を込めて、一つ一つ確認をしていってください。 ■コンパイルエラーについて 本当にCSVファイルはUTF-8になっているかどうか。TeraPADの設定がおかしくないかもう一度確認等。(一度、全部EUC-JPで試してみてもいいかもしれません) ■夏だけ変換されないことについて コードをいじっていませんか?CSVは1行ごとに読みこんでいき、カンマの部分で切り分けています。一行目の「夏」だけ変換されないのであれば、一行目を読み込めていないのかもしれません。コード内の $data[$row]["before"] = $tmp[0]; $data[$row]["after"] = $tmp[1]; を、誤って $data[$row]["before"] = $tmp[1]; $data[$row]["after"] = $tmp[2]; としていないでしょうか?念のため確認してください。配列は0からスタートします。 あと、一度ためしにCSVで「"(ダブルクォーテーション)」を入れてみてください。 [csv] "夏","冬" というようにです。私の環境では先のサンプルコードで正常に作動しましたので、これ以上何とも言えませんが(ちなみにApach2)、可能であれば他のサーバーや環境で動作を確認し、全ての環境で出現するエラーなのか、それとも、今使っている環境により発生しているものなのかを考えてみてください。 その上で、エラーの出るコードと使っている環境を掲示し、助けを求めれば解決できるかもしれません。 質問者 お礼 2009/04/10 20:52 お答えありがとうございました。 以下、アドバイスいただいた事項です。 ・TeraPAD以外にも、KutoCsvEditorでUTF-8保存を確認 ・SHIFT-JIS・EUC・UTF-8のうち、UTF-8のみOK(改行コードはWin用CR+LF) ・csvファイルの先頭行を空白にすると「夏」が「冬に」置換される(コードは変更していません) ・ダブルクォーテーションではコンパイルエラー発生。何回か再読み込みすると表示される場合があるが、無置換 ・他のサーバーや環境での動作確認は残念ながらできない状況です 現況では時々コンパイルエラーが生じますが、csvファイルの内容や更新時の保存形式に問題があるようです。 今後、もっといろいろ勉強しながら検討してみたいと思います。 本当にご親切なお答えありがとうございました。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 manimani2 ベストアンサー率70% (12/17) 2009/04/09 23:43 回答No.2 うーん、文字コードがらみの問題だと思うのですが、どうなんでしょう・・・。 とりあえず、フォーム部分に「name="str"」を入れていただき、 <input type="text" name="str"> とした上で(ただの転記ミスかな)、日本語の文字コードを見返してみてください。できればShift_JISは避け、EUCかUTF-8で全て揃えてみてください。Shift_JISでは一部の漢字がPHP内でそのまま使えませんので・・・。ちなみに、「全て揃える」というのは、CSV、PHP、HTMLの3つの事です。 ちなみにこのエラーについて 参考になる一文がありましたので、URLを入れておきますね。 http://www.exist.net/blog/2008/05/warning_mbregex_compile_err_pr.html http://php.benscom.com/manual/ja/function.mb-regex-encoding.php 質問者 お礼 2009/04/10 12:41 度々すみません。formのname="str"が抜けていました。 おかげさまで、各ファイルの文字コードUTF-8でコンパイルエラーは解消しました。 ただ、moji_data.csvが 夏,冬(※夏は入力パターンをいろいろ変えても置換されません) 甘,辛 高,低 のままだと問題ないんですが、 csvファイルに他の語句を追加するとコンパイルエラーが起こります。 (Tera PadからUTF-8でファイルを開き、語句を追加後UTF-8で上書き保存) 念のため、 //結果を表示の箇所で、 mb_internal_encoding("UTF-8"); mb_regex_encoding("UTF-8"); mb_regex_encoding(mb_internal_encoding()); print $str; をそれぞれ試してみましたが、結果は同じです。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発PHP 関連するQ&A 会員登録フォームの作り方について 今会員登録フォームを作っています。 流れとしては フォームの表示 ↓ 登録内容の確認画面の表示 ↓ 修正 or 登録 にしようと思っています。 今これらの動作を全てひとつのファイルで作ろうとしていたのですが、かなり複雑なものになってしまいました。 このようなシステムを作る場合、いくつかのファイルに分けて書いたほうが良いと思うのですが、どのように分ければいいでしょうか? フォームの表示をHYMLで。 内容処理をPHPで。 その後の確認ページはリダイレクトを使って一度HTMLファイルに飛ばしたほうがいいのでしょうか?それともPHPで表示したほうがいいのでしょうか? 1つのphpファイルで、入力フォーム、チェック、Insertまで全て済ませられませんか PHP4.4.4+MySQL4.0.26 PHPの入門書に、form.html から、update文を含むPHPにPOSTする 掲示板サンプルがあるのですが、これにある入力チェックサンプルですと、 別画面に遷移して(例えば投稿者名は)「全角10文字以下にして」、とか メッセージを表示します。そうではなく、 値を入力 ↓ 登録ボタン押下 ↓問題なしなら ↓問題あるなら INSERT文を実行 問題ある【フォームの脇に】「10文字以下で」と表示 のように1つのPHPファイルで全てを済ませたいのですが、可能でしょうか。 下記サンプルで、update.phpのところを<?= $PHP_SELF ?>にして、 <html> <body> <form method="post" action="update.php"> 投稿者名<input type="text" name="name" value=""> <input type="submit" name="reg" value="登録"> </form> </body> </html> 投稿者名の脇に if (strlen($name) == 0) { $errmsg .= "回答者名が入力されていません。<br>"; } print $errmsg; みたいなものを仕込めばよさそうですが、 (1) これを登録ボタン押下時だけ動作させなければだめですよね? (初めに表示するときにチェックにHITしてしまうでしょうから) それをどうしたらいいかわかりません。 (2) ↑が克服できたとしても、問題がなければSQLでINSERT or UPDATEを かけなければならないですが、POST先が$PHP_SELFだと、永久にUPDATEが かからず、入力チェックばかりが無限ループしてしまうと思うのですけど。 (3) それと、Insert ot Updateがかかったら「ありがとう」を出して、別画面に リダイレクトしたいです。 以上の極めてシンプルなもので結構ですので、サンプルをご教示いただけませんか ユーザーフォームのキャプションに中国語を表示したい VBAのユーザーフォームのキャプション(タイトル)に中国語を表示する方法が分かりません。 VBEではコードに中国語の簡体字を入力できないので、ワークシートに中国語を入力しておいて、それをキャプションに表示させたいです。 ラベルのTextやコマンドボタンのCaptionにはこの方法で簡体字を表示できるのですが、ユーザーフォームのCaptionでは?に置換されてしまいます。 ネットワークエンジニアとは?技術職の未来を考える OKWAVE コラム 中国語入力フォームの作り方。 中国語入力可のWEBフォームに入力された文字列を 日本語フォントで示せる独自の管理コードに置き換えたいのですが (1)中国語入力を受け付ける入力フォームをつくるには? (2)入力された中国フォントで書かれた文字を日本語フォント で示せる管理コードに置換え。 (2)もしくは(1)もPHP等のサーバサイドプログラムを使うのかもしれ ませんが上記プロセスしか思いつきません。 実現するための、やり方や手掛かりになる情報をご存知の方 ご教授意ただけませんでしょうか? 例、 你好←この中国語フォントで書かれた中国漢字を、 ↓↓ 中国語挨拶1←このように、日本語の管理コードに書き換えます。 PHP 入力フォームにあらかじめ文字を入れておく PHPプログラミングをしております。 入力フォームを作成しているのですが、前のページで入力し、受け取った内容をもう一度表示させたいのです。 入力フォームにあらかじめ文字を入れておくのは、フォームタグに value="文字" をつけたせば良いのはわかったのですが、 今回文字を$text = $_POST['name']; という形で受け取っています。 入力フォームにあらかじめこの受け取った$text を表示させるにはどうすれば良いのでしょうか。 PHPでフォームに自動入力 PHP初心者です。 (1)フォームに手入力しsubmit (2)手入力の内容をファイルに保管 (3)よそのサーバのフォームを開きユーザ名/パスワードを入力しsubmit (4)パスワード入力後に展開されるフォーム(https)に(1)の手入力の内容を入力しsubmit (5)"(4)"でsubmitした結果で次に表示するフォームを決定したい submitした結果はフォームに正常/エラーが表示されます 自サーバのWebフォームに入力された内容を他のサーバに反映したい。 サーバへの反映結果で次処理を変えたい。 他のサーバに反映させる手段はWebの入力フォームのみとなっています。 (3)(4)(5)をサーバで動作するPHPで自動的(トリガーは(1))に行いたいです。 (3)(4)(5)の実装方法をどなたかご伝授いただけないでしょうか。 サンプルのソースがあればありがたいです。 linuxサーバ(Fedora) PHP 5 質問内容が大きすぎ申し訳ないですが伝授いただけないでしょうか。 htmlの入力フォームからphpに値を渡しphpから画像ファイルが組み込まれたhtmlを生成する方法について イメージとしては脳内メーカーの様に、入力された文字列を画像に置き換えて、 生成されたhtmlに画像の組み込みを行いたいのですが上手くいきません。 基礎的な理解が低くて申し訳ないのですが、 やりたい事は以下のとおりです。 (1)「入力.html」ファイルのインプットフォームに文字情報を入力。 (2)入力した文字情報を「処理.php」ファイルに送信。 (3)「処理.php」ファイルで入力された文字列を画像ファイルに置き換える。⇒「画像.jpg」を生成。 (4)生成された「画像.jpg」を「出力.html」ファイルに組み込み、「出力.html」を表示。 (1)(2)(3)の工程までは作成できたのですが、生成した画像を別のhtmlファイルに組み込んで表示させる方法が分かりません。 <IMG src="~.php?val=XXX">といった形でhtmlに組み込むことができるのはわかっているのですが、、、、、 セッション変数を使わないとだめなのでしょうか? 入力フォームに打ち込んだはずの日本語が表示されません windowsXPを使っているのですが検索サイトや入力フォームなどで全角で日本語を打ち込んでいるのに何も表示されない時があります。 全角/半角を押して切り替えればローマ字なら表示されます。 一度ウィンドウを閉じれば改善することもあるのですが、閉じられない状況の時はアドレス欄に文字を打ちそれをコピペして対応しています。 対策を教えて頂けるとありがたいです。 入力フォームに文字を入れると消える文字 よく名前やメールアドレスを入力するフォームがありますよね。 あれでクリックすると最初に表示されてる文字(「お名前」や「メールアドレスなど」)が消えるjavascriptのサンプルはたくさん見かけるのですが、 一文字目を入力した時に消えるサンプルってどこかにありませんか? かっこいいのでサイトに実装したいのですが。 フォーム入力 お世話になります。 現在PHPをUTF-8で作成しております。 UTF-8で作成したPHP(HTML)のフォームより日本語を入力してsubmitしたとき、入力値を何も加工せずに$_POST['inputのname']で表示するときちんと文字化けせずにUTF-8で表示されているようです。 この場合、mb_encoding の関数を使用する必要はありませんよね?? また、 入力値をhtmlentities($入力値,ENT_QUOTES,'UTF-8')としてみて、このままだと日本語が入力された場合表示する文字列は文字化けしてしまうので、表示する前にhtml_entity_decode($入力値)でデコードしています。 この場合だとhtmlentitiesは特に使用する必要はないのでしょうか? エンコード→なんらかの処理→デコードとしているのですが、なんとなく必要ない気もしてきてしまいました。 文字コードについては自分なりに勉強したつもりですが、PHP内部でどのような処理が行われるかなどはよく理解できていないので、どうかご教授ください。 よろしくお願いいたしす。 フォームの入力途中でのプレビューについて フォームの入力途中でのプレビューについて質問させてください。 以下のようなフォームがあります。 <form action="sample.php" method="post"> <textarea rows="2" cols="50" name="aaa"></textarea> <input type="submit" value="プレビューする"> <textarea rows="2" cols="50" name="bbb"></textarea> <input type="submit" value="送る"> </form> このフォームの途中の「プレビューする」を押すとそれ以前の入力項目の内容である"aaa"をsample.phpではなく別のphpに送ってプレビューしたいと思っています。 最後の"送る"ボタンを押すとすべての内容がsample.phpに送られます。 このようにフォームの途中でformのaction属性に指定したところとは別のphpに値を送ってプレビューするようなことは可能でしょうか? 解決方法を御存知の方がいらっしゃいましたらよろしくお願いします。 また、他の方法によってフォームの記入内容の途中までをプレビューする”ことが実現可能であるようであればその方法も教えていただけると幸いです。よろしくお願いいたします。 入力フォームで入力されたデータをHTMLファイルで出力させたい。 入力フォームから入力されたデータを、 HTMLファイルで出力しようと考えています。 ブラウザで表示させるのではなく、 ファイルとして出力したいです。 いろいろググりましたが、サンプルが見つかりませんでした。 可能でしょうか。宜しくお願いします。 AIは使う人の年齢や市場にも影響する?人工知能の可能性 OKWAVE コラム 投稿入力フォーム上で漢字が表示されないのは何故? 投稿入力フォーム上で漢字が表示されないのは何故? ------------------------------------------------------- 回答が寄せられるよう、以下を参考に、質問内容をわかりやすく入力してください。OKWave では、個人情報の掲載や誰かの書いたものをそのまま転記するなどの著作権の侵害、質問ではなく議論を目的とする投稿などはできません(すべて削除対象となってしまいます)。 ------------------------------------------------------- 質問内容の注意書きをコピーして貼り付けてみました。 添付画像を見て下さい。入力した漢字が所々表示されず、正しい内容となっているか 確認しずらくなっています。 なんだか難しい漢字は表示されないみたい。表示されている文字の形も変? 他の掲示板でも同じ症状です。 Access フォーム入力規制 Accessのフォームで入力規制をする場合、 入力規制に LenB([フォーム名])<=10 のような記述をすれば 10文字まで規制できますが、漢字1つを1文字として規制はできないのでしょうか? 例えば、「田中」これは3文字として扱われますが実際に規制したいのは漢字2文字です。 セルに入力した文字を別のシートで置換する方法 複数置換を行いたいと思い、以下のマクロを作成しました。 If Range("B18") <> "" Then Cells.Replace what:=Range("B18"), replacement:=Range("D18") end if B18のセルが空欄ではない場合、 そのセルに入った文字を検索し、別の文字に変換するというものです。 1つや2つほどであれば、ショートカットキーを使って 置換をしていけば良いと思うのですが、 10項目以上、置換しなくてはならず同時処理を行いたいと思っています。 ただし、その10項目については対象ファイルごとにバラバラで、 統一性がないため、VBAの中に組み込むよりかは、 置換したい文字を各セルに入れていき、置換できればと思い、 マクロの作成を行いました。 ただ、上のマクロでは同じファイルではないと処理ができません。 ActiveSheetを使って処理を行うとは思うのですが、どのように記述してよいか分かりません。 お力添えを頂ければと思います。 上記内容で分かり辛いかもしれませんので、以下に箇条書きします。 1)複数置換を行いたい。 2)Aセルに置換対象の文字を入れ、Bセルに置換したい文字を入れる。 3)実行すると全シート上でA1セルに入力された文字を検索し、B1セルに入力してある文字に置き換わる。 4)これらの処理は同一ファイルで行うのではなく、それぞれ別ファイルで管理をする。 ※対象ファイルと実行データが別々のもの 以上です。 説明が分かりにくく、申し訳ありません。 もしVBAで以上のような処理が可能な場合、ご教授頂けますと幸いです。 (使用しているバージョンは、2003です。) macで辞書登録をした単語が入力できなくなりました macで辞書登録をした単語が正常に入力できなくなりました。 たとえば、「いちご」を登録すると、連続で入力できず「いちg」で止まってしまい、最終的に「o」とだけ表示されます。単語のローマ字つづりの一番最後の文字だけ表示されるような状態です。登録した漢字に変換できないばかりか、正常に入力できなくなってしまいました。「いちご」を「いち」と「ご」に分けて入力すると「o」にならないのですが、漢字に変換したいためそれもできず困っています。 http://blog.earthyworld.com/archives/kotoeri-wordchang/ ↑も試したのですが駄目でした。 助けてもらえると幸いです。 入力フォームの個数の変化について 動的に入力フォームを変化されるプログラムのサンプルコードを探しています。 詳しい質問概要については以下の通りです。 ・追加、削除ボタンを押下時に一つずつ入力フォーム(textbox)が増減する。 ・上記の削除ボタンとは別に、入力フォームの横に削除ボタンを設置し、削除ボタン押下時に削除ボタン横の入力フォームの削除が行われる。 ・環境としては、JavaScript+PHP、IEで動作する環境でお願いします。 まだ、初心者な為大変困っています。サンプルか簡単なコードを載せてくれるとありがたいです。 よろしくお願いします。 PHPで入力した内容をMYSQLに登録するとエラーが表示。 PHPで入力した内容をMYSQLに登録するとエラーが表示。 PHP側のフォームにパソコンと入力しMYSQL側に登録すると、 DB Error unknown errorと表示されていますが、 MYSQLのデータベースの中を確認すると、パソコンと登録されています。 PHPとMYSQLはsjisで設定します。 このエラーの回避は出来るのでしょうか?ご教授お願いします。 置換するとべき乗表示になってしまいます Excel2010を使用していますが、 セルの表示形式を文字列にしていても、場合によっては 置換するとべき乗(E)表示になってしまうのですが、 そういうものなのでしょうか? (置換後に表示形式を確認しても文字列のままです) これを防ぐ方法はありませんでしょうか。 実際に例として下記がべき乗表示となってしまいました。 )を未入力(消す)で置換しようとしたところ 122,123),140,141,150,157,163,171) ↓ 1.22123E+23 本当は122,123,140,141,150,157,163,171となるはず。 以上よろしくお願いいたします。 入力フォームで・・・・・ いつもお世話になります。 簡単な事で申し訳ありませんが よろしくお願い致します。 下記のような入力フォームを作っているのですが 自分localhostでは問題なかったのですが レンタルサーバーで動かすと どうしても入力場所に <?php=$FMemb? という文字が出てきてしまい 四角の枠の外に > が表示されます。 PHPが利いていずにHTMLとなっている気がしてなりません。 どなたかご指導よろしくお願い致します。 PHPのバージョンにも影響あるのでしょうか? <?php> . . <html> メンバー <input type="text" name="Memb" style="ime-mode:inactive" size="4" value=<?=$FMemb?> > . . 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ [技術者向] コンピューター プログラミング・開発 Microsoft ASPC・C++・C#CGIJavaJavaScriptPerlPHPVisual BasicHTMLXMLCSSFlashAJAXRubySwiftPythonパフォーマンス・チューニングオープンソース開発SEOスマートフォンアプリ開発その他(プログラミング・開発) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など
お礼
お答えありがとうございます。 投稿後、丸投げは×ということを知りあきらめていました。 (すみませんでした) さっそく、フォームページを作成し、 <form action="./okikae.php" method="post"> <input type="text"> <input type="submit" value="送信"> </form> からアクセスすると、正規表現がなんとか・・のWarningが表示されます↓。 Warning: mb_ereg_replace() [function.mb-ereg-replace]: mbregex compile err: premature end of regular expression in /・・ 日本語も英字も同じ結果です。 mb_ereg_replace()について検索してみたのですが解決できませんでした。 あと少しで望んでいたことができそうなので、できればアドバイスをお願いします。 サーバー(xrea)のせいでしょうか?