■サーバーが触らせてもらえなくてなんだか文字化けする時の文字コードの指定。
index.php とか、phpファイルの頭に以下を記述。
ini_set('default_charset', 'SJIS');
■改行とか
改行→br
echo nl2br($hoge);
html→エンティティ
echo htmlspecialchars($hoge);
■XML_RSS 空振り
RSSが取れない時があります。
色々調べて分からなかったので、以下な感じで対応。
$rss =& new XML_RSS($rssurl['rss']);
$rss->parse();
$getItems = $rss->getItems();
// 空振りしたら1秒待ってとりなおし(最高20回繰返)
if(empty($getItems[0])){
$j=0;
while( $j<20 ){
sleep(1);
$rss =& new XML_RSS($rssurl['rss']);
$rss->parse();
$getItems = $rss->getItems();
if(!empty($getItems[0])){$j=999;}
$j++;
}
}
■PHPをコマンドラインで実行したときの引数
実行
php swfed.php spoob.swf ふな 123467890.swf
要素数
$argc
内容
$argv[0],$argv[1],......
このとき、0番目にはswfed.php(自分自身の名前)が入ります。だから使うのは$argv[1]以降。
上記の場合、$argcは4で$argv[0]=swfed.php,$argv[1]=spoob.swf,$argv[2]=ふな,$argv[3]=123467890.swfになります。
■include_path
ライブラリを取り込んでいるところでルートディレクトリをどこで指定しているのかが分からなかった。
各スクリプト、.htaccess、/etc/php.ini まで見て無かったけど、 /etc/php.d/の下に任意のファイルを置いて書いていた。
■PHPをアップデートしたらswfed.soとimagick.soのエラーが出た。
tar zxf swfed-0.27.tar.gz
cd swfed-0.27/src/
phpize
./configure
make
できたswfed.soを上書き。
OK
次イメージマジック
yum remove ImageMagick
yum install ImageMagick
ダメ(´・ω・`)
pecl uninstall imagick
yum -y install ImageMagick-devel
pecl install imagick
autodetect
OK
■phpizeのインストール
yum -y install php-devel
PHPをソースからコンパイルし直すことなくモジュールを追加できます。
■配列のおしりに追加
array_push($array, "val1", "val2");
■配列 → CSV
$array = array('a', 'b', c');
$str = implode(",", $array);
或いは
foreach ($res as $val) {
$hoge .= $val['Hoge']['id'].',';
}
$hoge = substr($hoge, 0, (strlen($hoge)-1) );
■CSV → 配列
$str = "a,b,c,d";
$array = explode(",", $str);
echo $array[0]; // piece1
echo $array[1]; // piece2
■日付
$today = date("Y/m/d l H:i:s");
■連想配列でループ
foreach ($hash as $key => $val) {
print "キー: [" . $key . "] 、値: [" . $val . "] です。";
break; //途中で抜けるときはbreskです。
}
■正規表現で置換
例)2個以上のスペースは1つに置換。
$str = 'foo o';
$str = preg_replace('/\s\s+/', ' ', $str);
↓
foo o
■ファイルにメッセージを出力
$print_r = print_r($hoge, true);
error_log("===== =====\n", 3, '/home/hoge/logs/php_log');
error_log($print_r, 3, '/home/hoge/logs/php_log');
return true;
■xampp1.7でpdoが使えない(PHP + MySQL)
以下からパッチをダウンロードして、
http://windows.php.net/downloads/snaps/php-5.2-win32-VC6-x86-latest.zip
\xampp\apache\bin と \xampp\php に libmysql.dll をコピーする。
勿論もとのやつは保存しておくこと。
■頭に0を付けてケタ揃え
$j=sprintf("%05d",$j);
■セッションファイルを別の場所に保存したい
バーチャルホストなんかでセッションファイルを分けときたい時。
以下の一行を書いた .htaccess を変えたいディレクトリに置きます。
php_value session.save_path "セッションファイルの保存場所"
例)
cd /home/hoge/publich_html
cat > .htaccess
php_value session.save_path "/var/lib/php/session/hoge"
■SmartyでJavaScriptを書く時
{literal}で挟みます。これでSmartyはただの文字列として処理します。
ex.
<script type="text/javascript"/>
{literal}
if ( location.protocol == 'http:' ){
strServerName = 'http://daikoku.ebis.ne.jp';
} else {
strServerName = 'https://secure2.ebis.ne.jp/ver3';
}{/literal}
</script/>
■インストールし直し
例
cd /usr/local/src/php-4.4.2
vi lfconf.sh
--enable-bcmath を書き足す
make clean
sh lfconf.sh
make
/etc/init.d/httpd stop
make install
/etc/init.d/httpd start
■インストール用にこんなかんじのファイル作っとくと便利
lfconf.sh という名前で保存して sh lfconf.sh
↓
#!/bin/sh
./configure --enable-mbstring --enable-mbregex --with-dbase=yes --with-mysql --enable-track-vars --enable-discard-path --with-pear --with-config-file-path=/etc/httpd/conf --disable-debug --enable-debug=no --enable-ftp --enable-sockets --enable-mailparse --enable-trans-sid --with-apxs2=/usr/local/apache2/bin/apxs --with-gettext --with-zlib --with-gd --with-jpeg-dir=/usr/lib \
--with-freetype --with-png \
--with-pgsql \
--with-ttf --enable-gd-native-ttf --enable-gd-jis-conv \
--enable-exif \
--enable-memory-limit \
--enable-bcmath
#--enable-zend-multibyte
■テスト表示
info.php とでもして以下を記述しアップする。
<?php phpinfo(); ?>







