PHPの最近のブログ記事

Smarty.class.php に設定箇所があります。


var $left_delimiter  =  '{';

var $right_delimiter =  '}';

var $left_delimiter  =  '<!--{';

var $right_delimiter =  '}-->';

にすると、記述がコメントとして扱われるのでエディタ上で扱いやすいです。

繰り返し処理などで<tr>〜</tr>を挟むとき等、デフォルトだとエディタがエラーになるなどで面倒なんですよね。

ECCUBEもこうなってたと思います。

オススメです。

DBのデータをFPDF使って、PDFで表の形にする、という作業をしていてハマッたので。
MultiCellで自動改行されるけど、見だし部分はCellにするので、MultiCellの行数を数えて、行数設定をしてあげなければならなかった。

1)文字列の改行(PHP_EOL)でぶった切った配列を作り
2)配列要素を50字換算で何行あるか数え、たして行く。
って流れで考えて、mb_strlenで50字を計算してたけど、半角文字数がまざるとぐちゃぐちゃ。

調べたらmb_strwidthって関数があるのね。
これは全角2文字、半角1文字で、幅で計算してくれるっぽい。
なので、これで100字換算で何行か、というコードに変更。
これで問題なく計算できました。

■PECLをインストール
$pecl
でずらっといろいろ表示された。
ので、入ってるっぽい。
入って無かったら、
http://pecl.php.net/

http://svn.php.net/viewvc/pecl/
に色んなバージョン有り

■libssh2を入れる

$cd /usr/local/src
$wget http://www.libssh2.org/download/libssh2-1.4.0.tar.gz
$tar xvzf libssh2-1.4.0.tar.gz
$cd libssh2-1.4.0
$./configure
version: 1.4.0
Host type: i686-pc-linux-gnu
Install prefix: /usr/local
Compiler: gcc
Compiler flags: -g -O2
Library types: Shared=yes, Static=yes
Crypto library: openssl: yes (AES-CTR: no) libgcrypt: no
Debug build: no
Path to sshd: /usr/sbin/sshd (only for self-tests)
libz compression: yes
$make
$make install

■ssh2をインストール
$pecl install channel://pecl.php.net/ssh2-0.11.0

途中でlibssh2.soのありかを聞かれる
libssh2インストール時に表示されたので、それを入力
インストール完成

■php.iniに追加記述
$emacs /etc/php.ini
以下追加
extension=ssh2.so

php 側で
$m['fruits'] = array(
'00' => 'りんご',
'01' => 'みかん',
'02' => 'バナナ',
'03' => '梨'
);

といったマスタの配列があり
$favorite
という変数に'00'等の値が入り、マスタのデータを表示させたい時

{$m.fruits[$favorite]}

といった形で書けばOK

Smartyでプルダウンの設定をするとき2種類あります。


$m.category_hに連想配列でnameとvalueが設定されている場合
$category_h.typeで選択済み項目のvalueが入ってるとします。


1)全部Smarty任せ

{html_options name='category' options=$m.category_h selected=$category_h.type}

selectタグとoptionタグ全部書き出してくれます。


2)一行目にごにょごにょ入れたい時

{html_options options=$m.category_h selected=$category_h.type}

だとoptionタグだけ(selectedを選択済みに)
こんな風に利用します。

<select name="categpory" >
option value="">選択して下さい</option>
{html_options options=$m.category_h selected=$category_h.type}
</selected>

PHPでタグを除去する際の正規表現はこちら

preg_replace('/<[^>]*>/', '', $string);

PHPを使っている時に改行コードがLF以外だったら、ヒアドキュメントがエラーとなります。 Macでコードをかいている時に注意すること。

phpでメール送信(PHP)

| | コメント(0)

PHPでのメール送信はとっても簡単。

**********************************************
//管理者メールアドレス
$tomail = "info@two-ways.com";

//fromに表示されるアドレス
$mailfrom="From:" .mb_encode_mimeheader("webmaster") ."<".$tomail.">";

//タイトル
$subject="【ご意見・ご感想】";

//内容
$com =<<<_MAIL_
webサイトより、ご意見、ご感想が投稿されました。
などなど。
_MAIL_;


mb_language("Ja") ;
mb_internal_encoding("EUC-JP") ;
mb_send_mail($tomail,$subject,$com,$mailfrom);

様々な出力方法(PHP)

| | コメント(0)

■一般的な出力
print $data;
echo $data;

■配列の出力
print_r($data);

■書式を設定しての出力
printf("%03d", $data);
※3桁表示(意味「0」を使って「3」桁にする。「d」は10進数での出力を表す)
値を変数に入れるときは
$newdata = sprintf("%03d", $data);
とする

■ヒアドキュメント
print <<< _HTML_
_HTML_;

ファイルの更新日は以下で取得できる。
date( 'Y.m.d.h.i', filemtime('xxxxxxx.txt') )