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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

teratail

teratail(テラテイル)は、プログラミングに特化した日本語Q&Aサイトです。

HTML

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

Q&A

3回答

1996閲覧

コード書き換え依頼

b1ackc0ffee

総合スコア267

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

teratail

teratail(テラテイル)は、プログラミングに特化した日本語Q&Aサイトです。

HTML

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

0グッド

0クリップ

投稿2015/06/08 07:51

編集2022/01/12 10:55

下記のコードを、正規表現を使わずに書き換えてほしいです。

使用するときとしないときのメリットも教えてください。

あと、文末に改行が複数入っていた場合、<br>をつけなくするにはどうしたらよいでしょうか。最後の文章のあとは、改行が入っていても無視するようにしてほしいです。

宜しくお願い致します。

<DOCTYPE! html>

<html> <head> <meta charset="UTF-8"> <title>変換ツール</title> </head> <body> <div align="center"> <h1>変換ツール</h1> </div> <p>左側に変換したい文章を記入し、[&lt;br&gt;]もしくは[&lt;br&gt;&lt;br&gt;]ボタンを押してください。 <br>右側に変換後の文章が表示されます。 <?php if (isset($_POST['left'])) { $input = mb_convert_kana($_POST['left'], "a","UTF-8"); var_dump($input); if (isset($_POST['br1'])) { $replacement = '<br>$1'; } else if (isset($_POST['br2'])) { $replacement = '<br><br>$1'; } $pattern = "/(\\r\\n|\\r|\\n)/"; $after = preg_replace($pattern, $replacement, $input); $after = str_replace("(了)", "",$after); $result = $after; } ?> <form method="post"> <table> <tr> <td> <textarea name="left" rows="20" cols="45" placeholder="ここに変換したい文字を入力してください。"> <?php if(isset($_POST['sleft'])){ echo(htmlspecialchars($_POST['left'])); } ?> </textarea> </td> <td> <input type="submit" name="br1" value="<br>" style="width:70px; height: 20px"><br><br> <input type="submit" name="br2" value="<br><br>" style="width:70px; height: 20px""width:70px; height: 20px"><br><br><br><br> <input type="button" onclick="location.href='translate.php'" value="リセット" style="width:70px; height: 20px"> </td> <td> <textarea name="right" rows="20" cols="45" placeholder="変換後の文章がこちらに表示されます。"><?php echo htmlspecialchars($result);?></textarea> </td> </tr> </table> </form> </body> </html> ------------------------------ 見た目、google翻訳みたいな変換ツールを作成したいのです。 ・左に変換前のテキストエリア、右に変換後のテキストエリアがあります。 ・テキストエリアの間には、3つのボタンがあります。 →改行を<br>に変換するためのボタン・・・① →改行を<br><br>に変換するためのボタン・・・② →リセットするためのボタン・・・③ ・①②を押したら、半角化され、(了)という文字は削除されます。

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

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

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

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

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

guest

回答3

0

正規表現を使わない場合のコードです。

lang

1if (isset($_POST['left'])) { 2 $input = mb_convert_kana($_POST['left'], "a","UTF-8"); 3 4 if (isset($_POST['br1'])) { 5 $replacement = '<br>'; 6 } 7 else if (isset($_POST['br2'])) { 8 $replacement = '<br><br>'; 9 } 10 11 $count = 0; 12 $after = str_replace("\r\n", "${replacement}\r\n", $input, $count); 13 if ($count === 0) { 14 $after = str_replace("\r", "${replacement}\r", $input, $count); 15 } 16 if ($count === 0) { 17 $after = str_replace("\n", "${replacement}\n", $input, $count); 18 } 19 20 $after = str_replace("(了)", "", $after); 21 $result = $after; 22}

正規表現を使わなければ、このように、コードが冗長になります。
正規表現を使うことの最大のメリットは、コードが短くなることです。正規表現のデメリットは、通常のプログラミング言語に比べて読みづらいことです。しかし、適切なコメントをつけることで、この問題は解決できます。

文末の改行を削除する用途としても正規表現は使えます。

lang

1$input = mb_convert_kana($_POST['left'], "a","UTF-8"); 2$input = preg_replace("/(\\r|\\n)+\\z/", "", $input);

文末の「改行」ではなく「空白文字」の場合、rtrim関数が使えます。

lang

1$input = mb_convert_kana($_POST['left'], "a","UTF-8"); 2$input = rtrim($input);

rtrim関数で文末の改行を削除することも可能です。

lang

1$input = mb_convert_kana($_POST['left'], "a","UTF-8"); 2$input = rtrim($input, "\r\n");

詳しくは、rtrim関数のリファレンスを参考にしてみてください。

ちなみに、nl2br関数で2つの<br>を入れるには、次のようにします。

lang

1$after = nl2br(nl2br($input, false), false);

投稿2015/06/08 08:58

penguinshunya

総合スコア140

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

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

0

なんかよくわからんけど、こういう事かな…

<? if (isset($_POST['left'])) { $input = mb_convert_kana($_POST['left'], "a","UTF-8"); var_dump($input); $input = str_replace("\r\n", "\n", $input); $input = str_replace("\r", "\n", $input); if(isset($_POST['br2'])){ $input = str_replace("\n", "\n\n", $input); } $result = nl2br(rtrim($input), false); } ?>

投稿2015/06/08 09:29

編集2015/06/08 09:38
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

やってること nl2br と一緒ですよね…

投稿2015/06/08 08:14

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

b1ackc0ffee

2015/06/08 08:46

そうなのですが、 <br>をふたつ入れることができませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問