修正子でPHP関数

2007/01/23 | Smarty

Smartyの修正子は、標準装備の修正子のほかに、カスタムで作成した修正子も使用できるし、PHPの関数も修正子として利用できる(普段、普通に使用していた)。
しかし修正子としてstr_replaceを使うと、なぜかうまく動いてくれなくて、理由がわからない(例によってSmartyのソースを読むのが嫌だから)。いろいろ調べて、Smarty標準装備のreplaceという修正子で対応できることがわかった(当然こちらを使うのが正統派)。

ではなぜstr_replaceはダメなのか。

ウェブを調べていたら「暗黙的な修正子としてPHP関数を・・・」という記述があった。どうやらPHP関数によってはうまく動作しないものがあるようだ(だから標準の修正子を使えって話なのだろう)。

Read the rest of this entry »

テンプレート内で関数処理する

2006/12/05 | Smarty

smartyのテンプレート内で関数を使う必要が生じた。単に「関数で処理して表示」というわけではなく、いったんプログラムで処理して処理した戻り値をsmarty変数に返す、という処理をしたい。
いろいろ調べた結果、関数群を記述したクラスからオブジェクトを生成し、smartyオブジェクトに登録する、という方法が有効だとわかった。
具体的には、

class myClass
{
 function myfunc($params,&$objSmarty){
  return (戻り値);
 }
}

とクラスを定義しておき、これを以下の手順で登録する。

$myObj=new myClass;
$objSmarty->register_object(‘myObj’,$myObj);

テンプレート内で上記関数を呼び出して戻り値を変数に格納するには以下のように記述する。

{myObj->myfunc assign=returnValue}

何がやりたかったかというと、smartyに対して文字列で与えられた変数を分割して、生成した配列を個別に扱いたかった、ということ。
きっと、もっとスマートな方法があると思うのだが思いつかなかった。まぁ、これでもできているので、とりあえず解決。

Read the rest of this entry »

Googleのページランクを取得する

2006/10/06 | PHPライブラリ

SEOでおなじみのGoogleページランク。普通は「Googleツールバーをインストールして、ページランクを知りたいURLにアクセスし、表示された値を見る」という作業が必要だ。でもこれでは、わざわざそのページにアクセスしてみないといけないので、結構面倒だ。
仕事仲間に教えてもらったんだが、ページランクをプログラムで取得できるらしいことを知った。「これはやってみるっきゃないでしょう」ということでいろいろ調べて(もちろんgoogleで)、3時間かかってプログラムができた。いちおうクラス化したので転用可能だ。
以下のページに公開してみたのでお試しあれ。

Googleのページランクを調べる

ソースコードの公開は・・・結構な希望数があれば考えます。
希望者の方は・・・コメントしておいていただければ・・・(あと「PHPのテクメモ」にリンクはってくれれば・・・)。

一時的に出力文字コードを変更する

2006/07/21 | Smarty

普段はmojavi+pear+smartyで開発し、なおかつ文字コードはEUC-JPを使用している。最近はなるべくWeb2.0の潮流に沿うべく、googleやyahooのAPIを利用するようにと考えている。
google mapsを利用する際は諸般の関係でUTF-8が推奨らしい。基本的に今まで構築してきたものはすべてEUC-JPだから、どのようにしようかいろいろ考えたけど、smartyのテンプレートで、一番最初に以下のように書くことにした。

{php}
mb_internal_encoding(“EUC-JP”);
mb_http_output("UTF-8");
ob_start("mb_output_handler");
{/php}

これで単純に、出力は全てUTF-8に変換してくれる。

phpからgoogle maps

2006/06/25 | PHPライブラリ

google mapsをphpから操作するためのAPIが公開されているそうな。
詳しくはこちら
なかなかすばらしい。住所から経緯度に変換もできるとのこと。しかし日本語はまずそうだな。
JavaScriptを書くのは確かに面倒なので、これでやってしまいたい。早速使うことにしよう。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net