PHP:mb_eregよりpreg_matchを使った方が良い?

UTF-8の環境下で正規表現を日本語の文字列に適用するには
「mb_ereg」じゃなくて「preg_match」を使う方が良い?

Windows上のSJIS環境では、mb_eregでも、
日本語のマッチング処理が期待通り動作して、特に問題は起こらなかった。

しかしそれをUTF-8環境に持っていくと、期待通りマッチしない。
mb_language()やmb_internal_encoding()をやってもだめ。

そこで、preg_match()に置き換えたら、期待通りマッチするようになった。

CAKEPHP:MasterBakeのバグ?の修正

MasterBakeでControllerを焼いたとき、ページ切り替えの部分のコードが少しおかしい?

app/controller内にできる、function index()内の、

if(isset($this->params[“data”][“モデル名”][“nav_page”])){
 $page = $this->params[“data”][“モデル名”][“nav_page”];
}

の部分を

if(isset($this->params[‘url’][“data”][“モデル名”][“nav_page”])){
 $page = $this->params[‘url’][“data”][“モデル名”][“nav_page”];
}

と修正すると、index画面のページ切り替えが正常に動作するようになった。

Joomla:Community Builderのフィルタ(filter)について

Community Builderのフィルタ機能で、日本語を設定するとうまく抽出されない。

検索にヒットしない原因は、
フィルタの文字列をs(`cb_memo` =’%u30B6′)という形式で保存している
この%u30B6を数値文字参照(& #12470;のように)変換していて、
この数値文字でSQLを検索しているのでデータが該当しない

数値文字参照に変換しているのは
comprofiler.class.phpのutf8RawUrlDecode関数

●修正方法
■エスケープしている箇所
admin.comprofiler.html.php

moveOption3関数

if(condition!=” && condition!=null) condition=”‘”+escape(condition)+”‘”;

if(condition!=” && condition!=null) condition=”‘”+(condition)+”‘”;
と、escapeをとってしまえばうまくいく

この修正により、エスケープしなくなりますので、 sqlで利用できないような文字列は使用できない

>確認したいんですが、修正により、エスケープされなくなるというのは、セキュリティ上は、あまり良くないってことでしょうか??

いえ。管理画面なので、セキュリティは大丈夫と思います。

参考:http://joomla.bamboo-waves.com/content/view/10/11/lang,english/