2009年09月25日

初めてのCakePHP

とある事情でCakePHPを勉強することになりました。
動作環境はXAMPPで作成して、開発環境はEclipse。

簡単なアプリを作成して、さあ!実行!動かない!

「ページが見つかりません」(NotFound)になっちゃう。

なんでかなぁと思いましたが、
mod_rewrite

を有効にしないと駄目なんですね。

httpd.confの
#LoadModule rewrite_module modules/mod_rewrite.so



LoadModule rewrite_module modules/mod_rewrite.so
としてApache再起動すればOK。

無事動作しました。

※多分ですが、XAMPPの1.7.Xぐらい以降ではrewrite_module
はデフォルトで有効になっているようです。

posted by 台北猫々 at 23:42| Comment(0) | TrackBack(0) | 技術メモ(PHP)

2008年11月29日

渡された文字列に半角カタカナがあるか?のチェック(PHP編)


//文字列に半角カタカナが存在するか?
//PHPの正規表現を使用して、渡された文字列に半角カタカナがあるかチェックします。(UTF-8向け)
//PHP 正規表現 半角カタカナ UTF8
$str = "aaaaアあああああ";
if (preg_match("/(?:\xEF\xBD[\xA1-\xBF]|\xEF\xBE[\x80-\x9F])/", $str)) {
echo "文字列に半角カタカナが存在する"."<br>\n";
} else {
echo "文字列に半角カタカナが存在しない"."<br>\n";
}
//↓
//"文字列に半角カタカナが存在する"

posted by 台北猫々 at 20:11| Comment(0) | TrackBack(0) | 技術メモ(PHP)

2008年10月21日

渡された文字列に非半角数字があるか?のチェック(PHP編)


//渡された文字列に非半角数字があるか?
//PHPの正規表現を使用して、渡された文字列に非半角数字があるかチェックします。
//PHP 正規表現 非半角数字
$str = "1234567890a";
if (preg_match("/[^0-9]/", $str)) {
echo "文字列に半角数字でない文字が存在する"."<br>\n";
} else {
echo "文字列に半角数字でない文字が存在しない"."<br>\n";
}
//↓
//"文字列に半角数字でない文字が存在する"

posted by 台北猫々 at 18:57| Comment(0) | TrackBack(0) | 技術メモ(PHP)

2008年10月09日

渡された文字列に非半角英字があるか?のチェック(PHP編)


//渡された文字列に非半角英字があるか?
//PHPの正規表現を使用して、渡された文字列に非半角英字があるかチェックします。(UTF-8向け)
//PHP 正規表現 非半角英字 UTF8
$str = "abcdefghijklmnopqrstuvwxyz";
if (preg_match("/[^A-Za-z]/", $str)) {
echo "文字列に半角英字でない文字が存在する"."<br>\n";
} else {
echo "文字列に半角英字でない文字が存在しない"."<br>\n";
}
//↓
//"文字列に半角英字でない文字が存在しない"
posted by 台北猫々 at 22:05| Comment(0) | TrackBack(0) | 技術メモ(PHP)

2008年08月03日

正規表現で、渡された文字列に非ASCII文字があるか?のチェック(PHP編)


//渡された文字列に非ASCII文字があるか?
//PHPの正規表現を使用して、渡された文字列に非ASCII文字があるかチェックします。(UTF-8向け)
//PHP 正規表現 非ASCII文字 UTF8
$str = " abcdefghijklmnopqrstuvwxyz!#$%&'()[]@";
if (preg_match("/[^\x20-\x7E]/", $str)) {
echo "文字列にASCII文字でない文字が存在する"."<br>\n";
} else {
echo "文字列にASCII文字でない文字が存在しない"."<br>\n";
}
//↓
//"文字列にASCII文字でない文字が存在しない"

posted by 台北猫々 at 23:20| Comment(0) | TrackBack(0) | 技術メモ(PHP)

2008年08月01日

正規表現で、文字列は全て全角文字か?のチェック(PHP編)


//全て全角文字か?
//PHPの正規表現で、渡された文字列が全て全角文字かチェックします。(UTF-8向け)
//PHP 正規表現 全角文字 UTF8
$str = "ABCDEFXYZあいうえおカキクケコ@!+*_";
if (!preg_match("/(?:\xEF\xBD[\xA1-\xBF]|\xEF\xBE[\x80-\x9F])|[\x20-\x7E]/", $str)) {
echo "すべて全角である"."<br>\n";
} else {
echo "すべて全角ではない"."<br>\n";
}
//↓
//"すべて全角である"


2013.7.4追記
当記事は、正規表現「半角文字の含まれているか?」で偽であれば「全角文字のみである」という判定を行っています。この正規表現に改行コード、タブコードの条件が含まれていないため、両コードも全角文字としてみなしてしまいますので留意下さい。

posted by 台北猫々 at 23:50| Comment(2) | TrackBack(0) | 技術メモ(PHP)

2008年07月01日

組成式(化学)をブラウザ(HTML)表示用に整形する(PHP編)。


//H2O → H<sub>2</sub>O
//というように数字部分を下付き文字に変換します。
$formula = "H2O";
$formula = preg_replace("/([^0-9])([0-9]{1,})/", '$1<sub>$2</sub>', $formula);
echo $formula;
//→"H<sub>2</sub>O"

posted by 台北猫々 at 21:17| Comment(0) | TrackBack(1) | 技術メモ(PHP)

2008年06月08日

正規表現で、文字列は全て半角英数字か?のチェック(PHP編)


//全て半角英数字か?
//PHPの正規表現で、渡された文字列が全て半角英数字かチェックします。(UTF-8向け)
//PHP 正規表現 半角英数字 UTF8
$str = "abcdefghijklmnopqrstuvwxyz0123456789";
if (preg_match("/^[0-9A-Za-z]+$/", $str)) {
echo "すべて半角英数字である"."<br>\n";
} else {
echo "すべて半角英数字ではない"."<br>\n";
}
//↓
//"すべて半角英数字である"
posted by 台北猫々 at 17:16| Comment(0) | TrackBack(0) | 技術メモ(PHP)

2008年05月29日

正規表現で、文字列は全て全角ASCIIか?のチェック(PHP編)


//PHPの正規表現で、渡された文字列が全て全角ASCIIかチェックします。(UTF-8向け)
//PHP 正規表現 全角ASCII UTF8
$str = "ABCDEFGHIJK1234567890!#$";
if (preg_match("/^(?:\xEF\xBC[\x81-\xBF]|\xEF\xBD[\x80-\xA0])+$/", $str)) {
echo "すべて全角ASCIIである"."<br>\n";
} else {
echo "全角ASCIIではない文字がある"."<br>\n";
}
//↓
//"すべて全角ASCIIである"

posted by 台北猫々 at 18:43| Comment(0) | TrackBack(0) | 技術メモ(PHP)

2008年05月17日

正規表現で数値を3桁毎のカンマ区切り形式に変換

$buf = "12345678901234567";
$res = preg_replace("/(\d)(?=(\d{3})+(?!\d))/", '\1,', $buf);
print($res);

//↓
//12,345,678,901,234,567
//になります。
//参照:
//http://mono.kmc.gr.jp/~oxy/w/?Regexp%20Lookahead
posted by 台北猫々 at 22:16| Comment(1) | TrackBack(0) | 技術メモ(PHP)

2008年05月03日

正規表現で、文字列は全て半角カタカナか?のチェック(PHP編)


UTF-8対応です。


//全て半角カタカナか?
//PHPの正規表現で、渡された文字列が全て半角カタカナかチェックします。(UTF-8向け)
//PHP 正規表現 半角カタカナ UTF8
$str = "。アイウエオカキクケコサシスセソタチツテトナニヌネノハイフヘホマミムメモラリルレロヤユヨワン゚";
if (preg_match("/^(?:\xEF\xBD[\xA1-\xBF]|\xEF\xBE[\x80-\x9F])+$/", $str)) {
echo "すべて半角カタカナである"."<br>\n";
} else {
echo "半角カタカナでない文字がある"."<br>\n";
}
//↓
//"すべて半角カタカナである"

posted by 台北猫々 at 08:00| Comment(0) | TrackBack(0) | 技術メモ(PHP)

2008年04月20日

正規表現で、文字列は全て全角カタカナか?のチェック(PHP編)


UTF-8対応です。



$str = "アイウエオワイウエオン";
if (preg_match("/^(?:\xE3\x82[\xA1-\xBF]|\xE3\x83[\x80-\xB6])+$/", $str)) {
echo "すべて全角カタカナである"."<br>\n";
} else {
echo "すべて全角カタカナではない"."<br>\n";
}

posted by 台北猫々 at 21:48| Comment(0) | TrackBack(0) | 技術メモ(PHP)

2008年04月03日

正規表現で、文字列は全てASCII文字か?のチェック(PHP編)

<?php

//全てASCII文字か?
//PHPの正規表現で、渡された文字列が全てASCII文字かチェックします。
//PHP 正規表現 ASCII UTF8
$str = " abcdefghijklmnopqrstuvwxyz!#$%&'()[]@";
if (preg_match("/^[\x20-\x7E]+$/", $str)) {
echo "すべてASCIIである"."<br>\n";
} else {
echo "すべてASCIIではない"."<br>\n";
}
//↓
//"すべてASCIIである"

posted by 台北猫々 at 20:10| Comment(0) | TrackBack(0) | 技術メモ(PHP)

2008年04月01日

PHPの終了タグ ("?>") について

以前にPHPの終了タグ ("?>") について、「?>の後ろの改行」のようなことを書いたのですが、以下のような記述がありました。

============================
PHP コードのみからなるファイルでは、終了タグ ("?>") は決して含めてはいけません。終了タグは、PHP には必要ありません。 終了タグを省略することで、ファイルの最後にある空白文字が出力に影響することを防ぎます。
============================
Programmer's Reference Guideより


Zendのサイトでの記述なので、PHP コードのみからなるファイルでは終了タグ は記述しないのが正解ということなのですね。

#普通逆じゃないかな?という違和感はありますが(私だけ?(^^;)。


良かったらクリックお願いします→banner_01.gif
posted by 台北猫々 at 19:56| Comment(0) | TrackBack(0) | 技術メモ(PHP)

2008年03月06日

PHPをEclipseでいこう

Eclipse+PDT(PHP Development Tools)プラグインでPHPドライブ!

とりあえず、
AmaterasIDE InstallerからEclipseのインストーラーをダウンロードして、Eclispe(3.3.1)をインストールします。
http://amateras.sourceforge.jp/cgi-bin/fswiki/wiki.cgi?page=AmaterasIDEInstaller

このままだとプラグインの依存関係により、PDT(PHP Development Tools)プラグインをインストールすることはできません。
そこで、Eclipseの「ヘルプ」⇒「ソフトウエア更新」⇒「検索およびインストール」で「インストール/更新」ウインドウ
を起動して、「インストールする新規フューチャーを検索」を選択して「次へ」をクリックします。

EclipsePDT_1.jpg

EclipsePDT_2.jpg

「Europa Discovery Site」を選択して、「終了」をクリックします。更新対象モジュールを検索した後に、
更新対象プラグインの一覧ウインドウが表示されるので、右側の「必須項目を選択」をクリックして、選択
された更新プラグインをインストールします。

で、PDTをインストールする準備が整ったので、
更新サイト:http://download.eclipse.org/tools/pdt/updates/
を指定して、PDTをインストールします。

さあ!PHPを実行!としたいところですが、まだ実行できません。
さらに、Zend Executable Debuggerプラグインをインストールしなければいけません。

なので、さらにプラグインをインストールします。
更新サイト: http://downloads.zend.com/pdt
にアクセスすると以下のようにZend Executable Debuggerプラグインを選択できるので、
インストールします。

EclipsePDT_3.jpg

すると、以下のように実行環境の設定が完了します。

EclipsePDT_6.jpg

EclipsePDT_7.jpg


後は、PHPファイルを右クリック→「実行」→「PHP Script」で実行できます。
また、ブレークポイントを設定したから、PHPファイルを右クリック→「デバッグ」→「PHP Script」でデバッグできます。


今回は、PHPの実行環境にZend Executable Debuggerを使いましたが、XAMPPなどで入れたPHPを実行環境として使うことも可能でしょう。猫

良かったらクリックお願いします→banner_01.gif

posted by 台北猫々 at 19:11| Comment(0) | TrackBack(0) | 技術メモ(PHP)

2008年01月06日

フレームワークのMapleでクラス名をPascal形式

フレームワークのMapleでは仕様上、アクションクラスの名前を複数の単語を組み合わせたPascal形式で命名できません。
(例:GetCustomerInfoとしてたくてもGetcustomerinfoとしないと駄目)
※Windowsならファイル名に大文字小文字の区別がないので、"GetCustomerInfo"としても大丈夫ですが。
※ちなみにPHPはクラス名の大文字小文字を区別しません。

これって、ちょっと後で見づらいのですよね。なので、ちょっと改造してみました。

ActionChain::makeNamesの177行目付近以降を以下のように
書き換えます。

if (!@file_exists($filename)) {
$filename = MODULE_DIR . "/${actionPath}/${className}.class.php";
if (!@file_exists($filename)) {
//modify start by 台北猫々
//$className = null;
//$filename = null;
$className = join("_", $pathList);
$actionPath = join("/", $pathList);
$basename = $pathList[count($pathList) - 1];
$filename = MODULE_DIR . "/${actionPath}/${basename}.class.php";

if (!@file_exists($filename)) {
$className = null;
$filename = null;
}
//modify end
}
}
return array($className, $filename);

これにより、
例えば、Taiwan_GetCustomerInfoというアクションクラスならば、以下のようなディレクトリ構成とファイル名でいけるようになります。
$WEBAPP_DIR/$MODULE_DIR/Taiwan/GetCustomerInfo/GetCustomerInfo.class.php

ちなみに元の仕様では、↓のようにします。
$WEBAPP_DIR/$MODULE_DIR/taiwan/getcustomerinfo/Getcustomerinfo.class.php


Pascal形式:
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpgenref/html/cpconcapitalizationstyles.asp

良かったらクリックお願いします→banner_01.gif
posted by 台北猫々 at 09:42| Comment(0) | TrackBack(0) | 技術メモ(PHP)

2008年01月04日

?>の後ろの改行

C/C++言語だと、最終行の"}"の後ろに改行コードを入れておかないとコンパイル警告になりますよね。

なんか、これが染み付いていて他の言語でコーディングする時も、同じノリで、最終行に改行コードを入れてしまうのですが、PHPの場合これが仇になるのですよね。

?>の後ろに改行を入れてしまっていると、
Warning: Cannot modify header information - headers already sent by (output started at XXXXXXXXXX.class.php:50) in XXXXXXXXXXXXXX.class.php on line 27

なんて、ことになる場合もあります。他のクラスファイルをインクルードした時に発生する可能性があるのですが、?>の後にある空行がレスポンスヘッダとしてブラウザに送信されてしまうためのようです。

良かったらクリックお願いします→banner_01.gif
posted by 台北猫々 at 21:46| Comment(4) | TrackBack(0) | 技術メモ(PHP)

2007年12月25日

PDFファイルダウンロードDE表示


/**
* ファイルダウンロード処理
* ダウンロードの際は「Content-Disposition: inline」により、
* ダウンロードダイアログが表示されず、ブラウザのプラグインで
* 開きます。
* @param filename PDFファイルのフルパス名
* @return 0:成功 -1:失敗
*/
public static function downloadPdf($filename) {
if( !file_exists($filename) ) {
return -1;
}
$filesize = filesize($filename);
header("Content-Disposition: inline; filename=".basename($filename));
header("Content-Length: " . $filesize);
header("Content-Type: application/pdf");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
header("Pragma: private");

$handle = fopen($filename, "rb");
while (!feof($handle)) {
echo fread($handle, 4096);
flush();
}
fclose($handle);
return 0;
}

良かったらクリックお願いします→banner_01.gif
posted by 台北猫々 at 21:15| Comment(0) | TrackBack(0) | 技術メモ(PHP)

2007年12月23日

ファイルダウンロード処理


/**
* ファイルダウンロード処理
* ダウンロードの際は「Content-Disposition: attachment」により、
* ダウンロードダイアログが表示され、ブラウザのプラグインでは
* 開かないようになります。
* @param filename ファイルのフルパス名
* @return 0:成功 -1:失敗
*/
function download($filename) {
if( !file_exists($filename) ) {
return -1;
}
$filesize = filesize($filename);
header("Content-Disposition: attachment; filename=".basename($filename));
header("Content-Length: " . $filesize);
header("Content-Type: application/octet-stream");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
header("Pragma: private");

$handle = fopen($filename, "rb");
while (!feof($handle)) {
echo fread($handle, 4096);
flush();
}
fclose($handle);
return 0;
}

良かったらクリックお願いします→banner_01.gif
posted by 台北猫々 at 08:20| Comment(0) | TrackBack(0) | 技術メモ(PHP)

2007年11月27日

長い半角文字列を一定の長さで分割して、HTMLの改行を挿入します。

$str = "aaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbcccccccccccc";
preg_match_all("/.{10}|.+$/", $str, $out);
$res = implode("<br>", $out[0]);
posted by 台北猫々 at 22:00| Comment(0) | TrackBack(0) | 技術メモ(PHP)