Archive for the ‘php’ Category
preg_replaceによる置換で気をつけること
preg_replaceを使い、日本語の置換をするとき、マッチするパターンを持っているのに、スルーしてしまう箇所があるので調べてみた。
例えば、パターンにマッチする箇所を持つデータが100個あったとすると、20個ぐらいが置換できない。
完全に処理されないなら分かりやすいんだけど、半端な割合で処理がされないので、何が悪いのか迷ってしまった。
調べてみると、日本語とpreg_replaceの組み合わせだから起こる問題だとわかった。
パターン部分をUTF-8でエンコードして処理するとあっさり解決。
以下のように/の後にuを付けてあげる。
$x=preg_replace(‘/パターン/u’,'置換後’,$str);
PHPのエラー表示のメモ
プログラムが長くなってくると、ときどき出くわすのが
syntax error, unexpected $end in ファイル名 on ライン番号
unexpected $endというくらいだから、カッコの数がおかしいとか、そういう類のエラーというのは予想がつくんだけど
詳しく調べてみると、閉じカッコが足りない場合と、最初のカッコが足りない場合でエラー表示が違うとわかった。
閉じカッコが足りない場合だと
syntax error, unexpected $end in ファイル名 on ライン番号
逆に、最初のカッコが足りない、つまり閉じカッコの多すぎると
syntax error, unexpected ‘}’ in ファイル名 on ライン番号
これ知らなかったので、へぇ~と感心した。
このエラー表示で閉じカッコが多いのか少ないのか判断できるので、取り敢えず、カッコと足したり引いたりして、エラーを解決するのが早くなる。
エラー表示なんて、適当にしか見てなかったので、これからはちゃんと調べるようにしよう。
正規表現のメモ
例えば、ニッサン車の名前と、車両価格が入ったデータベースを作ったとする。
車名には「ニッサン・マーチ」、「ティーダ」、「ニッサンGT-R」のような物が入っていたとする。
純粋に車名だけでアイウエオ順に並べたいときは、ニッサン・マーチの「ニッサン・」やニッサンGT-Rの「ニッサン」いう文字が邪魔になる。この邪魔な部分を削除して並び替える仕組みが最初わからなかった。
車名と価格をセットで並び替えないと意味がないので、そこで時間を費やした。
もっといい方法があるだろうけど、取り敢えず以下の方法でできたのでメモ(プログラムはPHPを使用)。
まずデータベースから車名と価格を取り出し変数に入れる。
$carname=”車名”;
$price=”価格”;
置換して「ニッサン・」と「ニッサン」の文字を取り除く
$maker=”ニッサン”;
$name = ereg_replace(“$maker(・)?”,”", $carname);
連想配列に入れる(キーで並び替えをするために、キーに車名を入れる)
$namesort[$name]=$price;
以上を繰り返し処理。
次に、キーで並び替えをする
ksort($namesort);
繰り返し処理をして表示
foreach($namesort as $key=>$value){
print $key.$value;
}
これでメーカー名を省いた純粋な車名による並び替えができた。
プログラムの勉強に役立つサイト
プログラムの初心者向けのサイトを最近見るようになりました。
http://ajax.pgtop.net/
自分が見た中では、ここが頭ひとつ飛び抜けてわかりやすかったです。
PHP,MySQL,JavaScrip,Java,Ajaxが揃っているので、一通り初心者が興味をもつ分野は網羅されています。
全くの0からだとわかりにくいと思いますが、初心者向けの本を1冊済ませた後くらいに読むと面白いように先に進めると思います。
つまずきそうなポイントで必ず丁寧なフォローが入っているから、壁にぶつかりにくいです。
おかげで、1日でJavaScriptとAjaxが使えるようになりました。
ここまでのプログラム学習時間は合計50時間ぐらいだと思います。PHP,MySQL,JavaScrip,XML,Ajaxが自分が必要な分はなんとか使えるようになりました。周辺知識が揃ってきたので、今が一番学習曲線が伸びる時期な気がします。
PHPメモ
この前、何時間も続けてやっても効率悪いはずと書いていたんですが、夢中になってしまい、3日間で10時間以上いじりました。おかげでだいぶん使いこなせるようになりました。PHPでテンプレートを作り、静的なHTMLファイルを作ることができるようになったので、自分的には翼が生えた感じです。これでWORDPRESSを使わずにいろいろできそうです。プログラマになることが目的ではないので、PHPにはのめり込みすぎないように気をつけようと思います。気分転換に、週末の、金、土、日の3日間で携帯サイトの作り方を一通り勉強する予定です。