Scribble at 2023-07-06 08:36:49 Last modified: 2023-07-06 08:40:12

添付画像

こんなのはプログラマであればたいてい作ってると思うが、自作の道具である。上が、重複した文字列の行を削除するもので、下が指定した文字列を含む行を削除するものだ。オンラインでも「便利ツール」などと称して公開されているが、もちろん他人のサーバに文字列を送信すること自体が危険であるため、たとえ JavaScript で動かしていると言っていようと信用はしない方がいい。なぜなら JavaScript で Ajax の通信を使えば、処理の結果をクライアント側だけで出力できるとしても、入力したデータはいくらでも同時にサーバへ送信できるからだ。

ちなみに、暇つぶしに作っておこうと思う方に仕組みだけ簡単に示しておく。どちらも1個の PHP ファイルであり、最初にアクセスしたときは hidden 属性の POST 値として "action" という変数の値がセットされていなければ初期状態のフォームを表示する。フォームを実行するときに、このファイル自体を送信先にして hidden 属性の "action" という変数に値をセットしておけば、今度はフォームから送信されたデータを処理して結果を表示するような動作をする。二つのフォームは、それぞれ違う処理をしているが、おおまかな挙動はこのとおり殆ど同じである。

そして、重複を削除する方は入力したデータを全て配列に格納し、念のため全ての行を trim() してから array_unique() で重複を取り除いているにすぎない。それから特定の文字列を削除する方も、foreach で1行ごとに preg_match() で判定して、新しい配列に格納すべきかどうかを判定した上で、新しい配列を返している。それから、どちらのフォームも結果を表示する画面では「あらためてやりなおす」というボタンを付けていて、POST の値をクリアしてから同じファイルへ送信している。こうすると、"action" も消えるので、またフォームに初回アクセスしたのと同じ条件になる。

  1. もっと新しいノート <<
  2. >> もっと古いノート

冒頭に戻る


※ 以下の SNS 共有ボタンは JavaScript を使っておらず、ボタンを押すまでは SNS サイトと全く通信しません。

Twitter Facebook