こんにちは、オイケです。
過去ブログの消費税10%対応プロジェクトの第4回目の記事では、
- WordPressのテキストエディタのhtml内の税込価格を増税後価格に変更するgawkプログラム
を作成しました。
しかし、せっかくPHPを勉強し始めたので、今回の第8回目の記事では、
- ブラウザの入力フォームに貼り付けたhtml内の税込価格を増税後価格に変更するPHPプロブラム
を作成してみます。
VirtualBox起動
PHPプログラムをXSERVERに転送して、XSERVERでPHPプログラムを実行することもできるようです。
しかし、セキュリティー対策を実施していないPHPプログラムをXSERVERに置きっぱなしにしておくのは心配なので、今回は、仮想サーバーであるVertualBoxを起動して、VertualBoxの環境下でPHPプログラムを実行します。
まずは、Oracle VM VirtualBoxアイコンをダブルクリックして、Oracle VM VirtualBoxマネージャーを起動します。
起動をクックして仮想サーバーを起動します。
消費税8%の税込価格記事
上図は、消費税8%の税込価格記事です。
上の記事中の価格は、全て消費税8%の税込価格です。
この記事中の価格を、PHPプログラムを使って、消費税10%の税込価格に変更します。
消費税8%の税込価格記事のhtml
上図は、WordPressのテキストエディタで表示したhtmlをCtrl+Cでコピーした画面です。
次に、コピーした内容を、PHPプログラムの入力フォームに貼り付けます。
textarea.php実行画面
上図は、ブラウザで、http://192.168.56.11/~user01/textarea.php にアクセスして、textarea.phpを実行した画面です。
増税前htmlのフォームに、WordPressのテキストエディタでコピーした内容を、Ctrl+vで貼り付けます。
次に、変換するをクリックすると、下図のとおり、増税後htmlのテキストエリアに、消費税10%の税込価格に変更されたhtmlが表示されます。
増税後htmlのテキストエリア内にカーソルを置き、Ctrl+cでhtmlをコピーします。
「 」が消えないように、数日間、PHPコードを色々と変更してみたのですが、解決できませんでした。
消費税10%の税込価格記事のhtml
上図は、増税後htmlをWordPressのテキストエディタに貼り付けた画面です。
消費税10%の税込価格記事
上図は、PHPプログラムで変換したhtmlをブラウザで表示した画面です。
フォントタイプ、フォントサイズその他装飾が変わることなく、消費税10%の税込価格に変更されています。
html内の税込価格を増税後価格に変更するPHPプロブラム
以下のコードが、ブラウザの入力フォームに貼り付けたhtml内の税込価格を増税後価格に変更するPHPプロブラムです。
<!DOCTYPE html> <html lang = "ja"> <head> <meta charset = "utf-8"> <title>8%->10%税込価格に変更</title> <style type = "text/css"> <!-- p{color:black;line-height:1.5;} --> </style> </head> <body> <div> <?php // テキストエリアに文字が入力されているかのチェック session_start(); if(isset($_POST["note"])) { $note = $_POST["note"]; // HTMLタグやPHPタグを削除する # $note = strip_tag($note); $note_2 = str_replace(' ', '&nbsp;', $note); $cline = htmlspecialchars($note,ENT_QUOTES,'UTF-8'); $cline_2 = htmlspecialchars($note_2,ENT_QUOTES,'UTF-8'); $_SESSION["comment"] = $cline_2; } else { $cline = ""; } ?> <p>増税前html</p> <form method = "POST" > <textarea name = "note" <?php echo $_SESSION["comment"]; ?> cols = "90" rows = "20" placeholder = "増税前のhtmlを貼り付けてください"><?php echo $_POST["note"]; ?></textarea> <br> <input type = "submit" value = "変換する" > </form> <br> <p>増税後html</p> <?php // テキストが入力されていれば表示する $cline_back = $cline; $length = mb_strlen($cline); if($length > 0) { $pattern = '円'; $res = ""; # $newfld = ""; $match_result = preg_match("/[0-9]円/", $cline); if ($match_result == 1) { // 円を区切りにして、$clineを配列$a[]に入れる。 $a = explode($pattern, $cline); $fldcnt = mb_substr_count($cline, $pattern); $newfld = ""; for($i=0; $i<=$fldcnt; $i++) { $fldsent = $a[$i]; $leng_fldsent = $fldsent; $numflag = 0; $numpoint = 0; $j = mb_strlen($fldsent); // 円の左側が数字の場合、一番左の数字の位置を探す while(($j>0) && ($numflag == 0)) { $one_char = mb_substr($fldsent, $j-1, 1); if(preg_match("/\,|[0-9]/u", $one_char)) { $j--; } else { $numflag = 1; } } if($numflag == 1) { $numpoint = $j; } $one_char_2 = mb_substr($fldsent, $leng_fldsent -1); if(preg_match("/[0-9]/", $one_char_2) != 1) { if($i < $fldcnt) { // 円の左側が数字ではない場合は、増税計算せず、円を追加する。 $newfld .= $fldsent . "円"; } else { // $a[$lfdcnt]の場合は、円を追加しない。 $newfld .= $fldsent; } } else { // 金額の左側の文字を抽出 $japa = mb_substr($fldsent, 0, $numpoint); // 現在の税込価格を抽出 $oldprice = mb_substr($fldsent, $numpoint); // 税込価格からカンマ記号を削除 $oldprice_2 = str_replace(",", "", $oldprice); // 増税後の税込価格を算出 $newprice = floor($oldprice_2 / 1.08 *1.1); // 税込価格にカンマ記号を追加 $newprice2 = number_format($newprice); $newfld .= $japa . $newprice2 . "円"; } } # $sql_up = "UPDATE wp_posts SET post_content=? WHERE ID=?"; # $stmt_up = $pdo->prepare($sql_up); # $stmt_up->execute(array($newfld,$row["ID"])); # $res = "更新 ID= " . $row["ID"] . " " . $row["post_title"]; # print($newfld); } else { $newfld = 'html内に[0-9]円が存在しません'; } } #print $newfld; ?> <textarea name = "note2" cols = "90" rows = "20" placeholder = "ここには何も貼り付けないでください"><?php echo $newfld; ?></textarea> <br> </div> </body> </html>
上のPHPコードを作成するにあたり、以下の本の251ページからの「フォーム処理の基本」に記載されているコードが参考になりました。
まとめ
gawkで作成した、8%税込価格を10%税込価格に変更する環境を、PHPに移植することができました。
今回の記事を作成するにあたり、PHPのフォーム入力に関する知識が少しだけ身に付きました。
しかし、フォーム入力機能があるPHPを一般公開して誰でもアクセスできるようにするためには、十分なセキュリティー対策が必須のようです。
今後は、セキュリティー対策の知識も身に付け、一般公開できて役に立つPHPプログラムを作成できるようになれたらいいなぁと思っています。
今回をもちまして、過去ブログの消費税10%対応プロジェクトを終了します。
では、また。
コメント