Twitter Bootstrapの利用でどのくらい、WEBアプリ開発のコスト(工数)を減らすことができるのか?その実験を兼ねて、仕事用に個人的に使っていた関連語検索ツールに手を加えて公開しました。
PHP
【覚書】PHPでフォームから入力された文字列の先頭・末尾の全角半角スペースを取り除く方法
最近フロントエンドの記事が多かったため、サーバー側のプログラム処理について書きます。
フォームから入力されたテキストをプログラムの処理に渡す前に、不要なスペースを取り除いておかないと、ユーザーが意図した動きをしないことがあります。
「 コネクト」「コネクト 」「 コネクト WEB 」
のように入力された場合です。いたずら目的で入力されたり、どこかのサイトから部分的にコピペしたような場合でしょうか?
入力された文字列をそのまま表示したり、登録するような場合はいいのですが、例えば、入力された文字列で、DBの検索をかけたり、APIにクエリとして投げるような場合には、先頭・末尾のスペースは取り除いてテキストの部分のみ渡します。
必要な処理
- 先頭と末尾のスペースを削除する
- 全角・半角のスペースどちらとも削除する
- 複数のテキストの間のスペースは削除しない
$query = $_POST['data'];
で入力値を$queryにセットしておきます。
※$_POSTの部分は、$_GETや$_REQUESTの場合もアリ。
※ここで、htmlspecialcharsなどで、XSS対策をしておく方がいいです。
先頭・末尾の半角スペースの削除はtrim関数で
$query = trim($query);
これで、半角のスペースの対応はOKです。
先頭・末尾の全角スペースは正規表現を使って置換
以下、文字コードがUTF-8を前提とした処理です。
preg_replace()のマッチングのための正規表現で、「 (全角スペース)」を指定する方法。
$query = preg_replace('/^[\s ]*(.*?)[\s ]*$/u', '\1', $query);
あるいは、マルチバイト関数のmb_preg_replace()のマッチングのための正規表現で、「 (全角スペース)」を指定する方法。
mb_regex_encoding('UTF-8'); $query = mb_ereg_replace('^[\s ]*(.*?)[\s ]*$', '\1', $query);
いずれかの方法で全角スペースも取り除くことができます。
【覚書】PHPのnumber_format関数でXMLの取得データを扱う場合のエラー対策
とあるWEB APIのXMLデータの取得を行い、戻ってきた値のうち、値段の部分を、「,」を入れて、
3,000
のように表示しようと考えました。そこで、PHPプログラムの中で
続きを読む
【覚書】テキストリンクを使ってパラメーター付きのフォームデータをPOSTする
デザイン上の問題で、画像やボタンでのフォームデータのsubmitができないという場面に直面しました。
submit先のスクリプトが外部のもので、POSTしか受け付けてくれない仕様のため、フォーム側で対応しないといけなかったんです。
不格好ではありますが、何とか対応できましたのでその方法をメモとして残しておきます。
form内でaタグでsubmitのJavascript直書きでリンクさせ、hiddenでパラメーターを
送信できます。
<form action="send_post_data.cgi" method="post" name="myform"> <a href="javascript:document.myform.submit()"> 送信先でフォームの内容は処理できるよ </a> <input type="hidden" name="param1" value="aaa" /> </form>
【覚書】PHP、日付・時刻処理のメモ
WEBの申込フォームのプログラミングで、
2ヶ月後には、自動的にリストには表示されないようにして欲しいとか、
有効期限は、2週間とか、有効な開始日は、今日から3日後からとかいった場合、
開始日、終了日の自動取得が必要です。
PHPでの日付のフォーマット化、日付の取得、ときどき使うのだけれど、覚えられないので、メモとして残しておきます。
□今日の日付
$d = date(“Y-m-d”,mktime());
□今日から○○日後
ex.今日から2日後
$d = date(“Y-m-d”,strtotime(“+2 day”,mktime()));
□今日から○○ヶ月後
ex.今日から2ヶ月後
$d = date(“Y-m-d”,strtotime(“+2 month”,mktime()));
□今日から○○ヶ月と○○日後
ex.今日から2ヶ月と2日後
$d = date(“Y-m-d”,strtotime(“+2 day”,strtotime(“+2 month”,mktime())));
□xx年xx月xx日から○○日後
ex.2012年1月1日から2日後
$st = “2012-01-01”;
$d = date(“Y-m-d”,strtotime(“+2 day”,strtotime($st)));
□xx年xx月xx日から○○ヶ月後
ex.2012年1月1日から2ヶ月後
$st = “2012-01-01”;
$d = date(“Y-m-d”,strtotime(“+2 month”,strtotime($st)));
□xx年xx月xx日から○○ヶ月と○○日後
ex.2012年1月1日から2ヶ月と2日後
$st = “2012-01-01”;
$d = date(“Y-m-d”,strtotime(“+2 day”,strtotime(“+2 month”,strtotime($st))));