2024年01月06日

インスタグラム全画像取得


<?PHP


$instaBusinessId = '1111111111111111111111';
$accessToken = 'EAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDJfMZD';
$instaAccountName = 'some_one'; //  

$url = 'https://graph.facebook.com/v17.0/' . $instaBusinessId . '?fields=business_discovery.username(' . $instaAccountName . ')%7Bmedia.limit%28500%29%7Bmedia_url,media_type,children%7Bid,media_url,media_type%7D,thumbnail_url%7D%7D&access_token=' . $accessToken;

$res = file_get_contents($url);

$arr = json_decode($res, true);
$url_list = [];
foreach ($arr["business_discovery"]["media"]["data"] as $t_file) {

    if ($t_file["media_type"] == "VIDEO") {
        continue;
    }elseif($t_file["media_type"] == "IMAGE") {
        $url_list[] = $t_file["media_url"];
    }elseif($t_file["media_type"] == "CAROUSEL_ALBUM") {
        foreach($t_file['children']["data"] as $tt_dat){
            if($tt_dat["media_type"] == "IMAGE") {
                $url_list[] = $tt_dat["media_url"];
            }
        }
    }
}
$i=1;
foreach($url_list as $t_rul){
    $res = file_get_contents($t_rul);
    $fp = fopen($i.".jpg","w");
    fwrite($fp,$res);
    fclose($fp);
    $i++;
}

投稿者 muuming : 10:36 | コメント (0)

2022年06月07日

seedを使ってソート

function fisherYatesShuffle(&$items, $seed)
{
@mt_srand($seed);
for ($i = count($items) - 1; $i > 0; $i--)
{
$j = @mt_rand(0, $i);
$tmp = $items[$i];
$items[$i] = $items[$j];
$items[$j] = $tmp;
}
}

https://stackoverflow.com/questions/6557805/randomize-a-php-array-with-a-seed

投稿者 muuming : 08:57

2021年10月10日

smartyで文字連結

{assign var=comment value='プレイヤーレベル'|cat:{$presentLevelLimit}|cat:'以上から'}

結構不細工だなぁースマートに書けないものか・・・

投稿者 muuming : 11:39

2021年08月26日

youtube動画のアスペクト比

https://stackoverflow.com/questions/5010495/how-to-get-youtube-video-aspect-ratio

によると

https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v={videoID}&format=json

で取れるらしい

投稿者 muuming : 06:39

2020年05月20日

tcpdfで日本語フォント

tcpdfなんて使いたくないけど、使わざる得ない場合がある。

んでフォントをtcpdf用に変換するtcpdf_addfont.phpがどーも動かないというか詳細エラーで無いのであきらめた。


http://fonts.snm-portal.com/

ここで変換したものをtcpdf/font/いかにぶち込めば
$pdf->SetFont("font", '', 10);
で使えました。

投稿者 muuming : 15:33

2020年01月24日

is_fileとかはキャッシュされますよ

ファイルに関する情報はキャッシュされるので
clearstatcache(); を使いましょう。

		while($isGotLock === false){
			clearstatcache();
			if(is_file(LOCKSTATE_LOCKFILE)){

自プロセスがunlinkとかした場合は、その際にキャッシュはクリアされる。
が、他のプロセスがunlinkした場合は、自プロセスはキャッシュそのままなのであれれ?ってなる。

投稿者 muuming : 13:16

2020年01月16日

DomDocumentでhtmlから部分抜き取ってタグ表示

手探り状態なのでこれが一番近道なのかわかりませんが。

//読み込むときは文字コードをHTML-ENTITIESに
$domDocument->loadHTML(mb_convert_encoding($kekka_html, 'HTML-ENTITIES', 'utf-8'));

//タグで抜き出し
$tables = $domDocument->getElementsByTagName("table");
$tb = false;
foreach($tables as $table){
$str = $table->nodeValue;
if(strpos($str,"抜き出しテーブル") !== false){
$tb = $table;
break;
}
}

$newdoc = new DomDocument();
$newdoc->appendChild($newdoc->importNode($tb,true));
print $newdoc->saveHTML();

投稿者 muuming : 05:41

2019年12月06日

wordpressのドメイン変更

データベースをダンプしてドメイン部分書き換えてたが、シリアライズされたデータをプラグインが保存している場合に文字数変わって動かない場合が多々あった。

そこでこいつ
Search and Replace for WordPress Databases Script というスクリプト
https://interconnectit.com/products/search-and-replace-for-wordpress-databases/

投稿者 muuming : 06:07

2019年11月07日

phpでhtmlのパース

ページ全体simplexml_load_stringするとタグが壊れて動かない事も多いので必要部分を抜き出したうえでやってます。

$html = file_get_contents("html.txt");

libxml_use_internal_errors(true);
$domDocument = new DOMDocument();
$domDocument->encoding = "UTF-8";
$domDocument->loadHTML($html);

$mytag = "";
foreach ($domDocument->getElementsByTagName('table') as $node) {
	$tag = $domDocument->saveHtml($node);
	if(strpos($tag,'forecastDetail-hour_table') !== false ){
		$mytag = $tag;
		break;
	}
}

$domDocument->loadHTML( mb_convert_encoding($mytag, 'HTML-ENTITIES', 'UTF-8') );

$domDocument->encoding = "UTF-8";
$xmlString = $domDocument->saveXML();


$xmlObject = simplexml_load_string($xmlString);
$json = json_encode($xmlObject);
$array = array();
$array = json_decode($json,TRUE);

print_r($array);//["body"]["tr"]["td"][0]["span"][1];

exit;

投稿者 muuming : 14:46

2018年12月04日

SnappyでPDF

Snappyはwkhtmltopdfのラッパー(扱いやすくするためのライブラリ?)


wkhtmltopdfインストール(バージョンん最新は該当ページで確認)
$ cd /usr/local/src
$ wget http://download.gna.org/wkhtmltopdf/0.12/0.12.2.1/wkhtmltox-0.12.2.1_linux-centos6-amd64.rpm
$ rpm -ivh wkhtmltox-0.12.2.1_linux-centos6-amd64.rpm

インストールされたディレクトリごとファイル持っていけばFTPでもインストール可能でした。一応動作しました。

Snappyのインストール 

composer を使うのでコマンド無いならインストール
sudo yum --enablerepo=remi,remi-php71 install composer 
※--enablerepo=remi,remi-php71は無理くり高バージョン入れてる場合

#composer require knplabs/knp-snappy


//html作って
$pdf_html = $HTML->fetch("receipt.html");

//ライブラリ読み込んで
// wkhtmltopdfコマンドの位置をコンストラクタに渡す
require './vendor/autoload.php';
$pdf = new Knp\Snappy\Pdf(PATH_wkhtmltopdf);

$pdf->setOption('encoding', 'utf-8');
$pdf->setOption('page-width', '210');
$pdf->setOption('page-height', '125');
$pdfdata = $pdf->getOutputFromHtml($pdf_html);

投稿者 muuming : 10:14

2018年03月21日

PHP glob 正規表現的複数条件

GLOB_BRACE!

glob("te{xt,nse}.php", GLOB_BRACE) 

tent.php 
text.php 
test.php 
tense.php 

投稿者 muuming : 06:32

2018年03月16日

PHP function どこで設定?


$reflFunc = new ReflectionFunction('function_name');
print $reflFunc->getFileName() . ':' . $reflFunc->getStartLine();

投稿者 muuming : 10:06

2018年03月07日

web push を PHPで

公開鍵と秘密鍵は以下で作成
https://web-push-codelab.glitch.me/

以下の感じでブラウザ側から許可もらって、

ブラウザの公開鍵(keys)

ともう一つのセキュリティ用の追加の認証キー?(auth)

とendpointを取得しサーバ側に保存する



/*
 *
 *  Push Notifications codelab
 *  Copyright 2015 Google Inc. All rights reserved.
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License
 *
 */
/* eslint-env browser, es6 */
console.log("start");
var applicationServerPublicKey = 公開鍵をここに-UW0Q';
var pushButton = document.querySelector('.js-push-btn');
var isSubscribed = false;
var swRegistration = null;
if (typeof navigator.serviceWorker !== "undefined" && typeof window.PushManager !== "undefined") {
	console.log('Service Worker and Push サポートされてます!');
	navigator.serviceWorker.register('sw.js').then(function(swReg) {
		"use strict";
		console.log('Service Worker is registered', swReg);
		swRegistration = swReg;
		initialiseUI();
	}).catch(function(error) {
		"use strict";
		console.error('Service Worker Error', error);
	});
} else {
	console.warn('未サポートブラウザ');
	pushButton.textContent = '非対応ブラウザ';
}

function urlB64ToUint8Array(base64String) {
	"use strict";
	const padding = '='.repeat((4 - base64String.length % 4) % 4);
	const base64 = (base64String + padding).replace(/\-/g, '+').replace(/_/g, '/');
	const rawData = window.atob(base64);
	const outputArray = new Uint8Array(rawData.length);
	for (let i = 0; i < rawData.length; ++i) {
		outputArray[i] = rawData.charCodeAt(i);
	}
	return outputArray;
}

function initialiseUI() {
	"use strict";
	pushButton.addEventListener('click', function() {
		//2度押し抑制
		pushButton.disabled = true;
		if (isSubscribed) {
			//ユーザー解除をここに
		} else {
			//ユーザー登録を行う
			subscribeUser();
		}
	});
	// Set the initial subscription value
	swRegistration.pushManager.getSubscription().then(function(subscription) {
		isSubscribed = !(subscription === null);
		if (isSubscribed) {
			console.log('既に通知希望済');
		} else {
			console.log('通知未希望');
		}
		updateBtn();
	});
}
//******************************
// ユーザー登録
//******************************
function subscribeUser() {
	"use strict";
	const applicationServerKey = urlB64ToUint8Array(applicationServerPublicKey);
	console.log(applicationServerKey);
	swRegistration.pushManager.subscribe({
		userVisibleOnly: true,
		applicationServerKey: applicationServerKey
	}).then(function(subscription) {
		console.log('ブラウザにPUSH許可されました', subscription);
		//ブラウザ側からもらった subscription をサーバ側に保存する
		updateSubscriptionOnServer(subscription);
		isSubscribed = true;
		updateBtn();
	}).catch(function(err) {
		console.log('Failed to subscribe the user: ', err);
		updateBtn();
	});
}
//******************************
// 通知OKを頂いた後のブラウザからもらった情報の処理
//*****************************
function updateSubscriptionOnServer(subscription) {
	"use strict";
	//とりあえず画面上に表示
	const subscriptionJson = document.querySelector('.js-subscription-json');
	const subscriptionDetails = document.querySelector('.js-subscription-details');
	if (subscription) {
		subscriptionJson.textContent = JSON.stringify(subscription);
		subscriptionDetails.classList.remove('is-invisible');
	} else {
		subscriptionDetails.classList.add('is-invisible');
	}
	//サーバへ情報を転送し保存を本来行う
}
//**************************
// ボタンの表示変更
//**************************
function updateBtn() {
	"use strict";
	console.log("Notification",Notification.permission);
	if (Notification.permission === 'denied') {
		pushButton.textContent = '通知はブロック済み.';
		pushButton.disabled = true;
		updateSubscriptionOnServer(null);
		return;
	}
	
	if (isSubscribed) {
		pushButton.textContent = 'PUSH通知OFF';
	} else {
		pushButton.textContent = 'PUSH通知ON';
	}
	pushButton.disabled = false;
}


サーバ側PUSHを発信する場合はweb-push-libs/web-push-phpを利用

https://github.com/web-push-libs/web-push-php

ダウンロードしてcomposerでインストール PHP7必須だった

cd web-push-php-master/

composer install

インストール後は


require(__DIR__ . '/vendor/autoload.php');

$public_key = "サーバ側の公開鍵";
$private_key = "サーバ側の秘密鍵";

$auth = array(
    'VAPID' => array(
        'subject' => 'https://secure.m-kaihatsu.com',
        'publicKey' => $public_key,
        'privateKey' => $private_key,
    ),
);

$webpush = new \Minishlink\WebPush\WebPush($auth);
$payload = [
    'title' => '通知があります。',
    'message' => "poge",
    'url' => 'https://secure.m-kaihatsu.com'
];


$user["key"] = "ユーザー側から取得した公開鍵(key)";//p256dh
$user["auth"] = "ユーザー側からゲットした追加の認証キー?auth";//auth

$user["endpoint"] = "ユーザー側からゲットしたエンドポイントのURL";

$res = $webpush->sendNotification(
    $user["endpoint"],
    json_encode( $payload ), // jsonで送ると、pushイベントでjsonでデータを取得できる。
    $user["key"],
    $user["auth"],
    true
);

細かいことはまだわかってないけど概要のみ

投稿者 muuming : 09:01

2018年02月12日

timzone timezoneうるさいのー


//タイムゾーン設定
date_default_timezone_set('Asia/Tokyo');

投稿者 muuming : 15:03

2018年01月17日

PHP 動的にメソッド作成

class MethodTest
{
    public function __call($name, $arguments)
    {
        // 注意: $name は大文字小文字を区別します
        echo "Calling object method '$name' "
             . implode(', ', $arguments). "\n";
    }
}

$nameが存在していないが呼ばれたメソッド名

投稿者 muuming : 08:34

2017年12月11日

PHP エラーログ 文字化け対策

エラーログの文字化け
tail -f logs/error.log | perl -nle 's/\\x(..)/pack("C",hex($1))/eg;print $_'

投稿者 muuming : 11:09

2017年12月01日

PDO例外処理


$pdo = new PDO('mysql:dbname=test;host=localhost', 'test', 'pass', array(
  PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
));
//...

投稿者 muuming : 06:17

2017年11月24日

smartyテンプレート内でexplode

めったに使わ無さそうだがメモメモ

{assign var="array" value=","|explode:'apple,orange,banana'}

投稿者 muuming : 14:48

2017年11月20日

smarty:nodefaultsのバージョン3の場合

{$var nofilter} ですよーわすれる

投稿者 muuming : 11:41

2017年11月19日

smarty 文字列連結

{include file="`$dir``$file`"}

バックスラッシュで展開できるんだってー。あんま使わないからいつも忘れちゃう。

投稿者 muuming : 13:07

2017年11月17日

UTF-8文字列の入力チェック

PHPの場合


function validate_utf8($input) {
return (bool)preg_match('//u', $input);
}


https://qiita.com/mpyw/items/f0628b35a368fa468775

投稿者 muuming : 11:55

2017年11月09日

PHPエラー関連

◆エラーを発生させる
trigger_error ( string $error_msg [, int $error_type = E_USER_NOTICE ] )

◆発生したエラーを独自処理する
set_error_handler('errHandle');
function errHandle($errNo, $errStr, $errFile, $errLine) {
//処理
}


◆従来のエラーはthrow catch出来ないので変換したら幸せらしい
set_error_handler(function($severity, $message, $file, $line) {
throw new ErrorException($message, 0, $severity, $file, $line);
});


◆fatal errorを発生させる
throw new Exception("Unknown Error ");

◆fatal errorを独自処理する
function fatalHandle($exception) {
print $exception->getMessage();
}

set_exception_handler('fatalHandle');

投稿者 muuming : 07:30

2017年11月08日

PHPにおけるMVC

http://www.objective-php.net/mvc/about

↑わかりやすいと思う。

オレオレ理解で言えば
smarty使ってHTMLテンプレートを分ける ← VIEW
入ってきた情報をゴニョゴニョ処理する ← Model
受け付けて何の処理なのかを判断する ← Controllers

であるが smarty使って普通に作った場合は、そのアクセスするphpファイル毎に処理が別れるのでそういった意味では Controllers = どのPHPなのかであり、極端な話コントローラー無いとも言える

ちゅうことかな・・・

読み進めてみると、入力データにアクセスできるのはコントローラーだけって感じで進めてるので、となると入力チェックとかもコントローラーの役目なのかなー?

投稿者 muuming : 07:09

2017年05月10日

smarty array_key__exist

{if $key|array_key_exists:$array)}

投稿者 muuming : 12:31

2017年03月10日

よく使うメモ

<input type="text" name="gn_title" value="<!--{$dat.gn_title}-->">
<!--{if $err.gn_title}--><p class="err"><!--{$err.gn_title}--></p><!--{/if}-->

投稿者 muuming : 12:09 | コメント (0)

2017年02月17日

smarty checkboxでよく使うのでメモ


<!--{if isset($dat.kind) && is_array($dat.kind) && $key|in_array:$dat.kind}-->checked<!--{/if}-->

投稿者 muuming : 16:52 | コメント (0)

2016年12月14日

名前でpreg_match

5.2.2 名前つきサブパターンで、 (?<name>) や (?'name') といった構文が (?P<name>) のほかに使えるようになりました. 以前のバージョンでは (?P<name>) しか使えませんでした。

ということで (?P<name>)  を覚えておこう

また計測しない場合は(?:hoge|poge)てなかんじで?:をつけましょう

投稿者 muuming : 11:28

2016年11月29日

issetはnullもセットされてないと判定する・・・・



if (isset($var)) { ... }
if (compact('var') && $var !== null) { ... }
isset は値がセットされていてかつnullではない場合


if (!empty($var)) { ... }
if (compact('var') && $var) { ... }
値がセットされていて nullでも falseでも0でもない場合

if (!is_null($var)) { ... }
if ($var !== null) { ... }
nullではない場合

投稿者 muuming : 15:24

2016年10月31日

PHP自作例外処理

//************************************
// 例外処理登録
//************************************
function my_exception_handler($e) {
	//このあたりにその場合の処理を
	require_once("ERR.inc");
	$ERR = new ERR();
	$ERR->show("システムに致命的なバグがありました。".$e->getMessage(),1,$e->getFile(),$e->getLine());
	
	exit;
}
set_exception_handler('my_exception_handler');

投稿者 muuming : 09:35

2016年04月28日

ワードプレス ドメイン部分書き換え

いろいろ子テーマーのfunction.phpに書くとかいろいろ見たけど、、、、

ルートディレクトリのindex.phpの頭に以下でいけるかもしれない(保証なしw)

function mycallback($buffer)
{
// apples を全て oranges に置換する
return (str_replace("www.example.jp.", "www2.example.jp", $buffer));
}

ob_start ("mycallback");


投稿者 muuming : 14:09

2016年01月19日

PHP error_logエスケープされたものをコマンドラインで戻す

cat p| perl -nle 's/\\x(..)/pack("C",hex($1))/eg;print $_'

投稿者 muuming : 08:03

2014年05月20日

file_get_contentsで実際に取得したURL

file_get_contentsで実際に取得したURLがほしい時
何者かは詳細は不明だが $http_response_header という便利なものが・・・

これを使って最後のlocation headerを取得すれば該当のもの取れるんじゃね?

if ($fdat = @file_get_contents($url){
//実際に取得したURLを判定する
if(@count($http_response_header)){
foreach($http_response_header as $t_header){
if(preg_match("/^Location: (https?:\/\/.*)$/i",trim($t_header),$mc)){
$url = $mc[1];
}
}
}
}



投稿者 muuming : 16:52

2014年03月04日

PDFをinline インライン表示

	header("Content-Type: application/pdf");
	header("Content-Disposition: inline;filename=\"".mb_convert_encoding($dat["newsdat_pdfname"],"SJIS-win","UTF-8")."\"");
	print pg_unescape_bytea($dat["newsdat_pdfdat"]);

投稿者 muuming : 12:27

2014年02月27日

smarty literal デリミタ 変更

$HTML->left_delimiter = '<{';
$HTML->right_delimiter = '}>';

なんぼでもすきなのに変更したらええ

投稿者 muuming : 15:01

2014年01月09日

CKEditor で画像アップロードをPHPでする。

1,config.jsに追加

config.filebrowserUploadUrl = '/cs/imgup.php';
config.filebrowserBrowseUrl = '/cs/imglist.php';
config.filebrowserWindowWidth = '640';,
config.filebrowserWindowHeight = '480';

filebrowserUploadUrl を追加するとアップロードのタブが出現
filebrowserBrowseUrlを追加するとサーバブラウズボタン出現

2,サーバブラウスのPHP
一覧表示してクリックしたら以下の関数を走らせる


window.opener.CKEDITOR.tools.callFunction( <? print $_GET["CKEditorFuncNum"] ?>, "http://example.jp/this.jpg" );
window.close();

 

3,アップロードの受けてのPHP

 <html>
<body>
<script type="text/javascript">
window.parent.CKEDITOR.tools.callFunction(
<? print $_GET["CKEditorFuncNum"] ?>,
'http://example.jp/this.png',
'なにかしらメッセージがあればここに'
);
</script>
</body>
</html>
エラーでアップできない場合はメッセージだけいれてURLは空で

投稿者 muuming : 17:03 | コメント (0)

2013年11月19日

オブジェクトを配列に

function obj2arr($obj)
{
if ( !is_object($obj) ) return $obj;

$arr = (array) $obj;

foreach ( $arr as &$a )
{
$a = obj2arr($a);
}

return $arr;
}

投稿者 muuming : 18:25 | コメント (0)

2013年11月14日

ワードプレス サーバ移転でテーマがうまくいかない

ワードプレスのサーバ移転でデータベース、ファイル一式 パスも同じにしたのにテーマに関する部分のデータが引き継げなかった。

原因:mysqlのダンプデータのドメイン部分を変更してからmysqlにインポートしたが、テーマ別のデータがシリアライズされて保管されているものがあった。このさい、ドメインの長さ、文字長が異なるため、シリアライズの文字数を指定している部分 s16とかの部分も同時に変更しないといけなくて、どうもそのデータがアンシリアライズされずに、データ無しと判断されていた。

原因究明にかなりかかった・・・・

投稿者 muuming : 13:43

2013年10月15日

正規表現 文字列を含まない文字列を検索

ふぅ やっとわかった・・・・・

参考
http://d.hatena.ne.jp/a_bicky/20100530/1275195072

hoge123fugehoge23442342fuge という文字列があって hoge~fuge のセットを取得したいとき困った。

preg_match_all('/hoge(.*)fuge/','hoge123fugehoge23442342fuge');

とすると、正規表現はできるだけ大きく合致する部分を調べるので
文脈全体が合致してしまう。

そこで、、、、正規表現の先読み・後読みが出てくる

(?=pattern)  patternが出てくる前の位置に合致(肯定的先読み)
(?!pattern)  肯定的先読みで合致するポイント以外

(?<=pattern)  patternが出てくる後の位置に合致(肯定的後読み)
(?


つことで以下のようになりました。


preg_match('/hoge((.(?!fuga))*)(.(?=fuga))/', 'hogefugahogefuga',$match)

hoge が最初にあって
fugaが直後にある文字以外の連続
最後にfugaが直後にある1文字

投稿者 muuming : 15:29 | コメント (0)

2013年09月12日

ワードプレス

ワードプレスのウィジェット自体はデフォルトから入っているもの(メタ情報等)は管理画面では変更できない。(多分

wp-includes/default-widgete.php

をごりごり変更する。
メタ情報なら WP_Widget_Meta をいじる


テーマによって追加で入っているものは管理画面で変更可能
(functions.php)をいじればOK

投稿者 muuming : 17:42 | コメント (0)

2013年09月06日

一気にトリム

トリムするよ

//**************************
// トリム用関数
//**************************
function trim_value(&$value){
$value = trim($value);
}


//トリム実行
array_walk($_POST, 'trim_value');

投稿者 muuming : 10:06 | コメント (0)

2013年07月10日

一気にトリムする!

一気にトリムするメモ

こんな関数を事前に準備

function trim_value(&$value){
	$value = trim($value); 
}


array_walk($_SESSION["dat"], 'trim_value'); //トリム

投稿者 muuming : 11:57 | コメント (0)

2013年01月18日

facebook apiのprivacy設定が効かない

$facebook->api("/me/feed", 'POST', array(
   "access_token" => $access_token,
  "message" => $str,
  "picture" => "http://www.example.jp/img/himeimg.png",
  "link" => "http://www.example.jp/campaign2/",
  "name" => "プレゼントキャンペーン",
  "caption" => "プレゼントキャンペーンのお知らせです",
  "description" => "応募してねとみんなに訴える文章等々的要約!",
  "privacy" => array("value"=>"EVERYONE"),
));

とやるがどうしても公開にならない人が居る。

そういえばアプリ側の連携時に公開設定あったよなぁ。もしかして、、、、

予感的中
アプリの連携時に設定した公開設定をPOST時に超えることは出来ないらしい。


んじゃ アプリの設定のデフォってどうなってるの、、、

ディベロッパー画面のアプリ設定見てみたらデフォルト値無しになっとりました。

これをデフォルト公開にすれば根本解決にはならないが、まぁなんとか・・・

投稿者 muuming : 16:21 | コメント (0)

2011年02月04日

ついったーとの連携

1,自分の作ったアプリ(作る予定のアプリ)をTwitterに登録

http://dev.twitter.com/apps/

にて アプリを登録

----------------------
OAuth 1.0a integrations require more work.
Consumer key
ffmojimojimoji
Consumer secret
d/////////////////////////////
フォローをリクエストしました。
https://api.twitter.com/oauth/request_token
Access token URL
https://api.twitter.com/oauth/access_token
Authorize URL
https://api.twitter.com/oauth/authorize
We support hmac-sha1 signatures. We do not support the plaintext signature method.
Registered OAuth Callback URL
http://gavie.net/twi.php
--------------------------------

2,PHPライブラリをダウンして配置
https://github.com/abraham/twitteroauth

サンプルPGをとりあえず動かすには・・・

config.php の CONSUMER_KEY CONSUMER_SECRET OAUTH_CALLBACK OAUTH_CALLBACK を
自分のものに

twitteroauth.php の中を  public $format = 'xml'; に
※json_decodeが使えるなら変更しなくても良いとおもふ


あとはAPIマニュアル見ながらちまちま改造

トークンが無い場合のアプリからTwitter側へのリクエスト

https://api.twitter.com/oauth/request_token?oauth_callback=http%3A%2F%2Fgavie.net%2Fcallback.php&oauth_consumer_key=hogehogeDy4JjKiL3HQ&oauth_nonce=korehanannda5fe&oauth_signature=vBVaaaaa%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1296884779&oauth_version=1.0


これで応答が次のように帰ってくる
oauth_token=wLihogehogesNFeyg&oauth_token_secret=1JoIsoKhogehogeqCklyRzbj7UkVFww&oauth_callback_confirmed=true

これを使って連携を取る
oauth_tokenとoauth_token_secretは1度取得すれば今のところ無期限に使えるらしい。(保存しておけば)

つことらしい。


このあたりが参考なるか?
http://techno-st.net/2009/11/26/twitter-api-oauth-0.html

投稿者 muuming : 15:18 | コメント (0)

2010年09月27日

smarty in_array foreach checkbox

{foreach from=$job_time_pattern|smarty:nodefaults key=key item=item name=kploop}

<label><input name="job_time_pattern[]" type="checkbox" id="job_time_pattern{$smarty.foreach.kploop.iteration}" value="{$key}" {if ($dat.job_time_pattern)&&($key|in_array:$dat.job_time_pattern) }checked="checked" {/if}/>

{$item}
</label>
{/foreach}

投稿者 muuming : 10:27 | コメント (0)

2010年07月23日

utf8 日本語分割 preg_split

$tmp = preg_split('//u',$text);

//utf8 の場合 uがみそ
print_r($tmp);exit;

投稿者 muuming : 11:05 | コメント (0)

2010年06月16日

文字コード表を作る PHP

<?

for($i=0xa1;$i<0xff;$i++){
for($j=0xa1;$j<0xff;$j++){
$str[$i][$j]["i"] = dechex($i);
$str[$i][$j]["j"] = dechex($j);
$str[$i][$j]["str"] = pack('H*',dechex($i).dechex($j));
}
}

print '<meta HTTP-equiv="Content-Type" content="text/html; charset=euc-jp">
<table>';

foreach($str as $i_dat){
print "<tr>";
foreach($i_dat as $str){
print "<td> ".$str["str"]." </td>\n";

 

 

}
print "</tr>";

}

print "</table>";

投稿者 muuming : 10:45 | コメント (0)

2010年06月01日

携帯サイト PHP SESSION

.htaccessが使えない糞サーバに遭遇

ini_set('session.use_trans_sid', '1');.


PHP 5.1以降
session_regenerate_id (true); //これで古いセッションは消える


PHP 5.1前  //古いセッションが消えないので自分で消す
$old_session_id = session_id();
session_regenerate_id();
unlink(session_save_path() . '/sess_' . $old_session_id);

投稿者 muuming : 10:15 | コメント (0)

2010年05月14日

PHP exec バックグラウンドで実行

system("/home/your/bgprog $arg1 $arg2 > /dev/null &");


> /dev/null

などのリダイレクト先がないといくらバックグラウンドで実行してもずっとPHPは待ってしまう。

投稿者 muuming : 13:06 | コメント (0)

2010年03月16日

PHP 改行コードの統一

$com = preg_replace("/(\r\n|\n|\r)/","\n",$com);

忘れメモ

投稿者 muuming : 14:32 | コメント (0)

一文字ごとに分割

explodeやらで出来たような記憶もあるんだが・・・忘れた;

str_split($str);

でとりあえずできます(半角文字のみ)。すぐ忘れるのでメモ

mb_str_split($str);

は なさげなので、日本語の場合は・・・・

$textlen = mb_strlen($line,"utf-8");
for ( $i = 0; $i < $textlen; $i++ ) {
$line_arr[] = mb_substr( $line, $i, 1,"utf-8");
}

てなかんじでやってみた

投稿者 muuming : 13:19 | コメント (0)

2010年02月16日

日本語ドメインでリダイレクト PHP

header("Location: http://example.jp");
exit;

にてどうしても日本語ドメインを扱わないといけない場面に遭遇
http://pear.php.net/package/Net_IDNA を導入

しかしPHP5.1.6では 動かん!

調べると
Net/IDNA/php5.php のうしろの方にて
return strlen((binary)$string);

とあるが この型変換は 
http://jp.php.net/manual/ja/language.types.type-juggling.php#language.types.typecasting

バージョン足りない!

よくみると mb_string 使ってないならとかいう構文っぽいので
その ifの判断部分消して
return mb_strlen($string, '8bit');

だけ返してあげた。 とりあえずこれで動いた。

投稿者 muuming : 15:45 | コメント (0)

2009年11月09日

float って回り込みじゃない!

HTML でフロートの認識が間違っていますた。

回り込み 回りこみ と目にすることが多かったので、次のような場合に回り込まなくて あるぇー と馬鹿はまりしてしまいました。

回り込みだろ!? なんで一番目のdivの右側にこないんだ?後ろになぜいく!?


http://mb.blog7.fc2.com/blog-entry-61.html みて納得

要はfloat は通常のHTMLの画面より上の仮想画面っぽいところに浮き出させて、
元のHTML画面には無かったように表示させるだけ?っぽい認識

なのでフロート同士は重ならずに右にいってくれるっぽい。

投稿者 muuming : 11:47 | コメント (0)

2009年10月29日

smarty in_array

メモメモ

{if $dat|in_array:$array}
既に存在している!
{/if}

投稿者 muuming : 11:59 | コメント (0)

2009年10月06日

はまった・・・

$arr = "";

print count($arr); → 1

$arr = array();

print count($arr); → 0

まじめに初期化しろって事ですね。わかります。

投稿者 muuming : 11:53 | コメント (0)

2009年09月26日

smarty number format

3桁カンマ区切り
{$num|number_format}

投稿者 muuming : 11:28 | コメント (0)

2009年09月07日

smarty 配列中に変数をさらに使うどーん

$gift_corse = array(
1=>array("THE3000",3150,3000),
2=>array("5000ちゃん","5250",5000),
3=>array("オオガネモッチー","1050000","1000000")
);

$odat["item_course"] = 1;

とかの場合 THE3000を出すには

 

{$gift_corse[$odat.item_course].0}

投稿者 muuming : 17:33 | コメント (0)

2009年09月01日

pear DB DB_OK

$result = $this->pdb_con->query( $sql );

問い合わせ成功の場合 DB_OK が返ってくる?失敗の場合は失敗オブジェクト?

んでもって

if($result != DB_OK){
 追い合わせ失敗の処理

}

とかすると間違い たぶんオブジェクトとオブジェクトの型比較になり常にOKが返ってくる。

たぶん正解は
if($result !== DB_OK){
 追い合わせ失敗の処理

}

前の仕事場のソースコード全部間違っているwwwww

投稿者 muuming : 09:57

2009年08月25日

ぐにゃぐにゃ画像認証

http://www.captcha.ru/en/kcaptcha/

こんなんとか結構種類あるっぽい

投稿者 muuming : 17:56 | コメント (0)

2008年12月08日

preg_replace

$ymd = "11/22/2005 12/03/2005";

// 「mm/dd/yyyy」を「yyyy年mm月dd日」に変更
// yyyy:年4桁 mm:月2桁 dd:日2桁
$pattern = "/([0-9]+)\/([0-9]+)\/([0-9]+)/";
$replace = "\$3年\$1月\$2日";
$result = preg_replace($pattern, $replace, $ymd);

投稿者 muuming : 13:55 | コメント (0)

2008年10月07日

変換できない文字ある?

例えばsjis から EUC へ変換した場合 EUCには はしごだか が無いので??になる。

が mb_encode はエラーを返さない

調べるアイディアとしては
sjis → EUC → sjis と戻して同じものであるかチェックすればOK

投稿者 muuming : 09:19 | コメント (0)

セッションIDを毎回変える

http://jp.php.net/manual/ja/function.session-regenerate-id.php
5.1.0 /delete_old_session/ パラメータが追加されました。


PHP ver 5.1以下だと昔のセッションファイルが残るので
変数に一度退避してセッションデストロイ後に再度セッションスタートさせないとだめかも

投稿者 muuming : 09:18 | コメント (0)

2008年09月22日

DB.php pear


DB

目次
導入 - DSN -- データソース名(The Data Source Name)
導入 - 接続 -- 接続および接続の終了
導入 - クエリ -- クエリを実行する
導入 - 結果 -- クエリ結果からデータを取得する
導入 - 準備と実行 -- SQL 文を準備し、実行する
導入 - autoPrepare & autoExecute -- SQL 文を自動で組み立て、実行する
導入 - 移植性 -- データベースの移植性の関する機能
導入 - シーケンス -- シーケンスとオートインクリメント
DB -- 本体クラス
DB::connect() -- データベースに接続する
DB::isError() -- 変数が DB_Error オブジェクトかどうかを調べる
DB_common -- データベースへのアクセスのためのインターフェイス
DB_common::affectedRows() -- データ更新クエリによって変更された行の数を調べる
DB_common::autoCommit() -- 自動コミットの有効/無効を切り替える
DB_common::autoExecute() -- 指定した変数に基づいて、 INSERT 文あるいは UPDATE 文を準備・実行する
DB_common::autoPrepare() -- 指定した変数に基づいて、 INSERT 文あるいは UPDATE 文を準備する
DB_common::commit() -- 現在のトランザクションをコミットする
DB_common::createSequence() -- 新しいシーケンスを作成する
DB_common::disconnect() -- データベースとの接続を切断する
DB_common::dropSequence() -- シーケンスを削除する
DB_common::escapeSimple() -- 現在の DBMS の規則に基づいて文字列をエスケープする
DB_common::execute() -- 準備された SQL 文を実行する
DB_common::executeMultiple() -- 配列の各要素内に準備された SQL 文を実行する
DB_common::freePrepared() -- プリペアド SQL ステートメントに関連付けられたリソースを開放する
DB_common::getAll() -- クエリを実行し、すべてのデータを配列として返す
DB_common::getAssoc() -- クエリを実行し、結果を配列として返す
DB_common::getCol() -- クエリを実行し、ひとつのカラムのデータを返す
DB_common::getListOf() -- データベースのシステム情報を表示する
DB_common::getOne() -- クエリを実行し、最初の行の最初のカラムを返す
DB_common::getOption() -- PEAR DB 設定オプションの現在の状態を取得する
DB_common::getRow() -- クエリを実行し、最初の行を返す
DB_common::limitQuery() -- データベースに LIMIT クエリを送信する
DB_common::nextId() -- シーケンスの次の値を返す
DB_common::prepare() -- 後で実行するための SQL 文を準備する
DB_common::provides() -- DBMS が特定の機能をサポートしているかどうかを調べる
DB_common::query() -- データベースにクエリを送信する
DB_common::quote() -- 廃止予定: 文字列をクォートする
DB_common::quoteIdentifier() -- 識別子として安全に使用できるように文字列を整形する
DB_common::quoteSmart() -- リテラルとして安全に使用できるように入力内容を整形する
DB_common::rollback() -- 現在のトランザクションをロールバックする
DB_common::setFetchMode() -- デフォルトのフェッチモードを設定する
DB_common::setOption() -- PEAR DB の実行時オプションを設定する
DB_common::tableInfo() -- テーブル内のカラムやクエリ結果についての情報を取得する
DB_result -- DB 結果セット
DB_result::fetchInto() -- 結果セットの行を変数に取得する
DB_result::fetchRow() -- 結果セットから行を取得する
DB_result::free() -- 結果セットを開放する
DB_result::nextResult() -- 複数のクエリから結果セットを取得する
DB_result::numCols() -- 結果セットのカラム数を取得する
DB_result::numRows() -- 結果セットの行数を取得する
DB_Error -- DB エラーオブジェクト

SQL データベースにアクセスするための統一された API です。

投稿者 muuming : 13:27 | コメント (0)

2008年09月04日

PHP一時ディレクトリ

PHPのファイルアップロード時 一時ディレクトリにファイルが保存されていくが

その際のディレクトリの決定方法

「php.ini の upload_tmp_dir ディレクティブで 他の場所を指定しない限り、ファイルはサーバーにおけるデフォルトの テンポラリディレクトリに保存されます。サーバーのデフォルトディレクトリは、 PHP を実行する環境において環境変数 TMPDIR を設定する ことにより変更することができます。」


php.iniで設定すればそこ優先
無ければシステムのテンポラリディレクトリ
(多分 /usr/include/stdio.h  の P_tmpdir )
もしくは?環境変数TMPDIR (しかしPHP内からputenv() 関数での指定不可)←よくわからない

投稿者 muuming : 09:30 | コメント (0)

2008年06月19日

javascript中にアサインでエスケープ

jsにアサインするときエスケープで苦労したのでメモ

onClick="do_cancel({$mdata.id},'{$mdata|escape}')">

これだと 不正'文字"列 という文字列くるとJSこける

onClick="do_cancel({$mdata.id},'{$mdata.nname|smarty:nodefaults|escape:"quotes"|escape:"html"}')">

にて何とか解決

投稿者 muuming : 16:10 | コメント (0)

2008年06月10日

文字列を正規表現エスケープ

preg_quote(エスケープしたい文字列,デフォ以外でエスケープしたい文字)

↑perl互換の場合
# preg_grep
# preg_last_error
# preg_match_all
# preg_match
# preg_quote
# preg_replace_callback
# preg_replace
# preg_split

デフォ以外でエスケープしたい文字には / がよーつかわれる
デフォだと以下のもののみ
. \ + * ? [ ^ ] $ ( ) { } = ! < > | :

につかえるんば

投稿者 muuming : 14:01 | コメント (0)

2008年06月09日

smarty 文字まるめ

{$mitem.mov_comment|mb_strimwidth:0:15:"..."}

投稿者 muuming : 18:32 | コメント (0)

2008年04月26日

XML処理

require_once 'XML/Unserializer.php';

$xml = <<
宮川 達彦
伊藤 直也

3045
JPY

オライリー・ジャパン
Blog Hacks ―プロが教えるテクニック&ツール100選

XML;

$Unserializer =& new XML_Unserializer();
$Unserializer->setOption('parseAttributes', TRUE);
$status = $Unserializer->unserialize($xml);
if (PEAR::isError($status)) {
die($status->getMessage());
}

print_r($Unserializer->getUnserializedData());

で 配列ぼーーん らしい?
http://cl.pocari.org/2005-07-19-1.html

投稿者 muuming : 00:56 | コメント (0)

2008年04月24日

ブログと対話できる

XML-RPC APIを使ってブログと対話できっぽい。


http://www.sixapart.jp/movabletype/manual/3.2/mtmanual_programmatic.html

以下 焼きそばソース例
--------------------------------------------------------------

require_once("XML/RPC.php"); //XML-RPC package 読み込み
$GLOBALS['XML_RPC_defencoding'] = "UTF-8";


//XML-RPCインタフェース、ユーザ定義
$mt_host = "www.saburo.org";
$mt_xmlrpc_path = "/shell/mt-xmlrpc.cgi";
$port = 80;
$mt_user = "hogehogeo";
$mt_xmlrpc_passwd = "hogehogeo";


//クライアントの作成
$myClient = new XML_RPC_client( $mt_xmlrpc_path, $mt_host, $port );


$appkey = new XML_RPC_Value( '', 'string' );
$username = new XML_RPC_Value( $mt_user, 'string' );
$passwd = new XML_RPC_Value( $mt_xmlrpc_passwd, 'string' );


//メッセージ作成
$myMessage = new XML_RPC_Message(
'blogger.getUsersBlogs',
array($appkey, $username, $passwd) );


//メッセージ送信
$myResponse = $myClient->send($myMessage);


//レスポンス受信後の処理
if( !$myResponse ){
exit('Could not connect to the server.');
}else if($myResponse->faultCode() ){
exit('XML-RPC fault ('.$myResponse->faultCode().'): '
.$myResponse->faultstring());
}
//レスポンスへのfunction array_convEnc($a)適用
$myBlogs = array_map( 'array_convEnc', XML_RPC_decode( $myResponse->value() ) );


//出力
print_r($myBlogs);

function array_convEnc($a)
{
if( is_array($a) ){ return array_map( 'array_convEnc', $a ); }
return mb_convert_encoding(
$a, mb_internal_encoding(),
$GLOBALS['XML_RPC_defencoding'] );


これを色々組み合わせれば 自動ブログ記事生成機能が完成(予定

投稿者 muuming : 17:17 | コメント (0)

2008年04月01日

mb_send_mail

間違ってました。

× mb_send_mail($mail_to,mb_encode_mimeheader($subject,"ISO-2022-JP"),$mailbody,$mail_header)

○  mb_send_mail($mail_to,$subject,$mailbody,$mail_header)

投稿者 muuming : 13:27 | コメント (0)

2008年03月11日

デフォルト値

{$hensu|default:"no data"}

はいってなかったら no data と入れる。


デフォルトの挙動を変える

$smarty->default_modifiers = array('escape', 'default:""', 'nl2br');

このデフォルト外の動きをさせる

{$var|smarty:nodefaults}

特にこのデフォルト動作は配列には対応していないので
foreach ではエラーとなる
なのでforeach中で|smarty:nodefaults しる。
{foreach from=$arr|smarty:nodefaults item=・・・}

投稿者 muuming : 15:59 | コメント (0)

2008年02月27日

smart 修飾子

文字丸め(切捨て)

{$message|truncate:50:"・・・":false}

投稿者 muuming : 00:50 | コメント (0)

2008年02月26日

外部コマンドをforkして実行

$handle = popen('/path/to/spooge 2>&1 &', 'r');
pclose($handle);

かならず閉じる

投稿者 muuming : 12:40 | コメント (0)

2008年01月23日

pear 色々変更 アップデート

# pear upgrade --force http://pear.php.net/get/XML_RPC-1.4.0.tar
# pear upgrade --force http://pear.php.net/get/Archive_Tar
# pear upgrade --force http://pear.php.net/get/PEAR-1.4.0.tar
# pear upgrade --force http://pear.php.net/get/XML_Parser


このへんヒントに


投稿者 muuming : 16:05 | コメント (0)

2007年12月04日

serialize の作り?

* a - array
* b - boolean
* d - double
* i - integer
* o - common object
* r - reference
* s - string
* C - custom object
* O - class
* N - null
* R - pointer reference
* U - unicode string

らすぃ。

print_r($hoge);が以下のような場合


[0072] => http://www.example.com/case/ss_fa02.html
[0090] => http://www.example.com/
[0093] => http://www.example.com/integration/index.html
[0102] => http://www.example.com/corp/index.html
[0103] => http://www.example.com/ir/holder/index.html
[0104] => http://www.example.com/ir/highlight/index.html
[0105] => http://www.example.com/ir/highlight/zaimu.html
[0107] => http://www.example.com/ir/highlight/zaimu_con.html
[0108] => http://www.example.com/ir/policy.html
[0109] => http://www.example.com/ir/annunciation.html
[0110] => http://www.example.com/ir/project/index.html
[0111] => http://www.example.com/glossary/index.html
[0112] => http://www.example.com/glossary/000188.html
[0113] => http://www.example.com/glossary/000213.html
[0114] => http://www.example.com/glossary/000207.html
[0115] => http://www.example.com/glossary/000209.html
[0116] => http://www.example.com/glossary/000177.html
[0117] => http://www.example.com/glossary/000192.html
[0118] => http://www.example.com/glossary/000169.html
[0119] => http://www.example.com/glossary/000187.html


シリアライズ化されると次のように

a:892:{ s:4:"0072";s:41:"http://www.example.com/case/ss_fa02.html";
s:4:"0090";s:24:"http://www.example.com/";
s:4:"0093";s:46:"http://www.example.com/integration/index.html";
s:4:"0102";s:39:"http://www.example.com/corp/index.html";
s:4:"0103";s:44:"http://www.example.com/ir/holder/index.html";
s:4:"0104";s:47:"http://www.example.com/ir/highlight/index.html";
s:4:"0105";s:47:"http://www.example.com/ir/highlight/zaimu.html";
s:4:"0107";s:51:"http://www.example.com/ir/highlight/zaimu_con.html";
・・・・

投稿者 muuming : 09:35 | コメント (0)

require と include

require を使用すれば、プログラム実行前に指定したファイルを読み込む

include を使用すれば、プログラム実行中に指定したファイルを読み込む

include_once でファイルを読み込むと、一度読み込まれたファイルは読み込まなくなる

投稿者 muuming : 09:07 | コメント (0)

2007年11月13日

smartDE配列の数

{$articleTitle|@count}

投稿者 muuming : 16:06 | コメント (0)

2007年11月07日

グラフ グラフ graphpite

パスが通っているところに
Image フォルダを作成し

Graph.php と Graph を配置

フォントは Graph フォルダ内の Fonts フォルダにぶち込み
尚日本語を使用する場合はUTF-8で使用する。


http://graphpite.sourceforge.net/samples/index.php?sample=10&code=1

のコードを参考に使用してみるもデータのセットが不明
このコードでは Image_Graph_Dataset_Random の部分でやってるが
ランダム・・・

色々見るに どうやら
Image_Graph_Dataset_Random は
& Image_Graph::factory(’random’, array(31, 0, 10, false));

こんな感じの省略?っぽい

ということで

http://side-b.sto.co.jp/weblog/archives/117 より
-------------------------------------------------------------------------------------------- * ‘graph’ = Image_Graph
グラフ
* ‘plotarea’ = Image_Graph_Plotarea
プロットエリア。データが描画される領域(たぶん)。
* ‘line’ = Image_Graph_Plot_Line(Image_Graph_Plot)
ライン。折れ線グラフ。
* ‘area’ = Image_Graph_Plot_Area(Image_Graph_Plot)
エリア。
* ‘bar’ = Image_Graph_Plot_Bar(Image_Graph_Plot)
棒グラフ。
* ‘pie’ = Image_Graph_Plot_Pie(Image_Graph_Plot)
パイ。円グラフのこと?
* ‘radar’ = Image_Graph_Plot_Radar(Image_Graph_Plot)
レーダー
* ’step’ = Image_Graph_Plot_Step(Image_Graph_Plot)
ステップ
* ‘impulse’ = Image_Graph_Plot_Impulse(Image_Graph_Plot)
インパルスグラフ。
* ‘dot’ or ’scatter’ = Image_Graph_Plot_Dot(Image_Graph_Plot)
ドットまたは散布。
* ’smooth_line’ = Image_Graph_Plot_Smoothed_Line(Image_Graph_Plot)
スムースライン。滑らかな線。曲線。
* ’smooth_area’ = Image_Graph_Plot_Smoothed_Area ‘dataset’ = Image_Graph_Dataset_Trivial(Image_Graph_Plot)
スムースエリア。滑らかな領域。
* ‘random’ = Image_Graph_Dataset_Random
ランダム。
* ‘function’ = Image_Graph_Dataset_Function
データセット関数。
* ‘vector’ = Image_Graph_Dataset_VectorFunction
ベクター関数(?)。
* ‘category’ = Image_Graph_Axis_Category
座標カテゴリ(?)。
* ‘axis’ = Image_Graph_Axis
座標軸。
* ‘axis_log’ = Image_Graph_Axis_Logarithmic
座標軸。対数の(?)
* ‘title’ = Image_Graph_Title
タイトル。
* ‘line_grid’ = Image_Graph_Grid_Lines
ライングリッド。
* ‘bar_grid’ = Image_Graph_Grid_Bars
バーグリッド。
* ‘polar_grid’ = Image_Graph_Grid_Polar
ポラーグリッド。中軸?
* ‘legend’ = Image_Graph_Legend
レジェンド。凡例。すみっこによくあるサンプルみたいなものだと思う。
* ‘font’ = Image_Graph_Font
フォント
* ‘ttf_font’ = Image_Graph_Font
TTFフォント
* ‘Image_Graph_Font_TTF’ = Image_Graph_Font (to maintain BC with Image_Graph_Font_TTF)
なんだろう、BCって。バーコード?
* ‘gradient’ = Image_Graph_Fill_Gradient
グラデーション。
* ‘icon_marker’ = Image_Graph_Marker_Icon
アイコンマーカー。
* ‘value_marker’ = Image_Graph_Marker_Value
値のマーカー。
---------------------------------------------------------------------------------------------
サーンプルページ
http://pear.veggerby.dk/samples/

投稿者 muuming : 13:55 | コメント (0)

2007年10月25日

メールをPHPに渡したときの環境変数

qmail から PHPにメールをパイプで渡した時の環境変数の例
(他のMTAでもそうなのかは調べてない)
$_ENV = Array
(
[HOST2] => buken
[HOST3] => buken
[SENDER] => dummy@ezweb.ne.jp
[RECIPIENT] => buken.net-dummy@buken.net
[HOST4] => buken
[DTLINE] => Delivered-To: buken.net-dummy@buken.net
[HOST] => buken.net
[EXT] => dummy
[USER] => buken.net
[LOCAL] => buken.net-dummy
[PATH] => /var/qmail/bin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/var/qmail/bin:/usr/local/bin
[RPLINE] => Return-Path: <dummy@ezweb.ne.jp>
[PWD] => /home/vpopmail/domains/buken.net
[NEWSENDER] => dummy@ezweb.ne.jp
[SHLVL] => 1
[HOME] => /home/vpopmail/domains/buken.net
[EXT3] =>
[EXT2] =>
[EXT4] =>
[UFLINE] => From dummy@ezweb.ne.jp Thu Oct 25 02:12:52 2007
[_] => /usr/local/bin/php

投稿者 muuming : 11:14 | コメント (0)

2007年10月23日

smarty 年代タグを作る

{html_select_date prefix="EndDate" end_year="+1" field_order="YMD" month_format="%m月" day_format="%02d日"}

これで



と表示される。

特定の日を選択状態にしたければ
time=$time
を入れる
{html_select_date prefix="EndDate" end_year="+1" field_order="YMD" time=$time month_format="%m月" day_format="%02d日"}

投稿者 muuming : 10:45 | コメント (0)

2007年10月18日

便利ちゃん関数(ど忘れ用メモ)

■ob_implicit_flush() は、 自動フラッシュをオンまたはオフに切替えます。
  True = 常に発射
  False = 処理完了後に発射
  関数を呼び出した際のデフォルト値()の場合 True

■set_time_limit()は、実行時間の最大値を制限する
  スクリプトが実行可能な秒数を設定します。
  この制限にかかるとスクリプトは致命的エラーを返します。
  デフォルトの制限値は 30 秒です。
  なお、php.iniでmax_execution_timeの 値が定義されている場合にはそれを用います。

  のため、処理を終わらせたくない場合はset_time_limit(0)を定義する。

■ignore_user_abortは、接続が切断された際にスクリプトの実行を終了するかどうかを設定する
  処理をどうしても終わらせたくない場合がありますが、その時に定義しておくとよさげです。

投稿者 matsu : 09:44 | コメント (0)

2007年10月09日

PHP古いバージョンから新しいバージョンを受け流す

http://jp2.php.net/releases/index.php

みっけ!

投稿者 matsu : 14:32 | コメント (0)

2007年09月27日

smarty for文

{section name=cnt start=0 loop=10}
処理!
{/section}

こんなんで出来るらしい

投稿者 muuming : 19:23 | コメント (0)

PEAR (Pager)

require_once("Pager/Pager.php");

$sql .= " offset ".($page-1)*$limit;
$sql .= " limit ".$limit;

$page ページ番号


$params = array(
'totalItems' => $sum,  合計渡す
'perPage' => $limit,   
'delta' => 8,        ページ番号の上限
'append' => true,
'separator' => '|',     名前の通り
'spacesBeforeSeparator' => '2',  空白の数
'spacesAfterSeparator' => '2',  空白の数
'clearIfVoid' => true,
'urlVar' => 'page',  GET値の変数名
//'mode' => 'Sliding',  使ってみて確かめるべし
'mode' => 'Jumping',  使ってみて確かめるべし
'prevImg' => '<<前のページ',  前に戻るを好きに変えれる
'nextImg' => '次のページ>>',  次へを好きに変えれる
'fileName' => 'hr.php',          ファイルネーム指定
);

$pager = & Pager::factory($params);  

$links = $pager->getLinks();  リンク作ってくれますよ

$HTML->assign("links",$links["all"]);  $links["all"]これで全部吐き出し

投稿者 matsu : 12:48 | コメント (0)

2007年09月21日

ffmpeg-php

http://phpspot.org/blog/archives/2007/03/phpffmpegffmpeg.html

よりメモ

define('FFMPEG_BINARY', '/usr/local/bin/ffmpeg');
define('FFMPEG_FLVTOOLS_BINARY', '/usr/bin/flvtool2');
require_once 'ffmpeg.php';

$files_to_process = array(
'xxxxx/ffmpeg/www/example/to-be-processed/MOV00007.3gp',
'xxxxx/ffmpeg/www/example/to-be-processed/Video000.3gp'
);

$video_output_dir = 'xxxxx/ffmpeg/www/example/processed/videos/';
$bitrate = 64;
$samprate = 44100;
$ffmpeg = new ffmpeg();

$ffmpeg->on_error_die = FALSE;

foreach($files_to_process as $file)
{
$filename = basename($file);
$filename_minus_ext = substr($filename, 0, strrpos($filename, '.'));
$ok = $ffmpeg->setInputFile($input_dir.$file);
if(!$ok)
{
echo $ffmpeg->getLastError()."
rn";
$ffmpeg->reset();
continue;
}
$ffmpeg->setVideoOutputDimensions(320, 240);

$ffmpeg->setFormatToFLV($samprate, $bitrate);
$ok = $ffmpeg->setOutput($video_output_dir, $filename_minus_ext.'.flv', TRUE);
if(!$ok)
{
echo $ffmpeg->getLastError()."
rn";
$ffmpeg->reset();
continue;
}
$result = $ffmpeg->execute(TRUE);

if(!$result)
{
echo $ffmpeg->getLastError()."
rn";
$ffmpeg->reset();
continue;
}

echo 'Video converted... '.array_shift($ffmpeg->getLastOutput()).'
'."rn";
$ffmpeg->reset();
}
?>


ffmpeg::setInputFile - 入力ファイルを設定
ffmpeg::setFormatToFLV - フォーマットをFLVに指定
ffmpeg::setOutput - 出力の設定
ffmpeg::execute - 変換の実行

投稿者 muuming : 19:01 | コメント (0)

2007年09月20日

php エラーレベル

たとえばphp.iniと同じように、次のように書いたとしても、期待したとおりに動作しません。

php_value error_reporting E_ALL

正しくは次のようにします。

php_value error_reporting 2047

.htaccessを読み込む段階ではE_ALLなどの定数が未定義になっているため、値を直接指定する必要があるとのことです。

ちなみに各エラーレベルの値は次のようになっています。

1 E_ERROR
2 E_WARNING
4 E_PARSE
8 E_NOTICE
16 E_CORE_ERROR
32 E_CORE_WARNING
64 E_COMPILE_ERROR
128 E_COMPILE_WARNING
256 E_USER_ERROR
512 E_USER_WARNING
1024 E_USER_NOTICE
2047 E_ALL
2048 E_STRICT

投稿者 muuming : 12:43 | コメント (0)

2007年09月11日

smarty アウトプットフィルター

スマーティー機能拡張で表示直前にユーザーが作った関数に
かけてから表示できるらしい

入力時もできるらしい。

ということで入出力がsjisで処理中はEUCの場合
例)
//********************************
// 出力文字コード変換
//********************************

//入出力がsjis
$HTML->register_prefilter("convert_func_from");
$HTML->register_outputfilter("convert_func");


//*****************************
// 表示
//*****************************
$HTML->display("timetable.html");
//**************************************************************************
// 変換用ユーザー関数 smarty のプリフィルタ・アウトプットフィルタで使用
//**************************************************************************
function convert_func($buff, &$smarty){
return mb_convert_encoding($buff,"SJIS","EUC-JP");
}

function convert_func_from($buff, &$smarty){
return mb_convert_encoding($buff,"EUC-JP","SJIS");
}

register_outputfilter の部分で直前にかけるユーザー定義関数
ここでは文字コード変換してる。

投稿者 muuming : 12:21 | コメント (0)

2007年09月07日

動画のサイズとか色々とる

ソース元がなくなった場合の目もメモ
http://www.phppro.jp/phptips/vol50/0c64d12cb4f4d099b65aff32cd2b967e

2. ffmpeg-phpで動画のデータを取得しよう

オープンソースで動画や音声を変換するツールと言えば、ffmpegがあります。多彩なコーデックに対応しており、いろいろなものに使われています。

このffmpegの機能の一部をPHPで簡単に使えるようにしたエクステンションがffmpeg-phpです。これを使えば、少ないコードで簡単に、動画のプロパティや画像を取得できます。

では、早速使い方の解説です。

ffmpeg-phpのインストールには、ffmpeg本体が必要で、ffmpegのコンパイル時に

--enable-shared

をつけておく必要があるのでご注意ください。

ffmpegの準備ができたら、ffmpeg-phpのソースコードを

http://ffmpeg-php.sourceforge.net/

からダウンロード、解凍して、

phpize
./configure
make
make install

とするだけでインストールは終了です。

動作の確認は、解凍したffmpeg-phpのディレクトリにあるtests と test_ffmpeg.phpをドキュメントルートにコピーしてアクセスし、テスト用ファイルのデータが出力されれば正常です。

次に、実際の使い方です。

dl("ffmpeg." . PHP_SHLIB_SUFFIX); //エクステンションをロード

$movie_path = 'tests/test_media/test.avi'; //画像のパス

$movie = new ffmpeg_movie($movie_path); //インスタンス生成

echo $movie->getFileName(); //ファイル名取得、表示
echo "
";
echo $movie->getFrameRate(); //フレームレート表示

/* 実行結果

tests/test_media/test.avi
24

*/

以上、わずか数行書くだけで、test.aviのプロパティが取得できます。

次に、画像の取得と表示方法です。(GDが必要です)

$frame = $movie->getFrame(100);
$image = $frame->toGDImage();

getFrameで取得するフレームを指定し、toGDImageでresouseを返しますので、

ob_end_clean();
header('Content-Type: image/jpeg');
imageJpeg($image,null,100);
imageDestroy($image);

とすると、画像を表示することができます。

これらを応用すると、例えば、あるディレクトリに画像を置くだけで、動的に画像のタイトルを取得し、画像を出力してサムネイルを作成したり、動画のデータを自動的にデータベースに入力するなどの使い方がでます。

また、ここで紹介したものはほんの一部ですので、他に使用できるメソッドなどは、公式のAPIドキュメント

http://ffmpeg-php.sourceforge.net/apidoc.php

をご覧ください。

ffmpeg-phpは面倒な画像取得などを少しのコードで実現できるので、機会があれば使ってみてはいかがでしょうか。

投稿者 muuming : 16:38 | コメント (0)

2007年08月30日

おわらせない!最後まで走れ!

ignore_user_abort

(PHP 4, PHP 5)

ignore_user_abort — クライアントの接続が切断された際にスクリプトの実行を終了するかどうかを設定する
説明
int ignore_user_abort ( [bool $setting] )

クライアントの接続が切断された際にスクリプトの実行を終了するかどうかを設定します。

投稿者 muuming : 10:56 | コメント (0)

2007年08月16日

ブラウザ側のタイムアウト防止

print "処理中ですしばらくお待ち下さい
";
set_time_limit(0); // スクリプトの実行時間を無限にする
hogejob_start(); // 時間のかかる処理をキック

ob_end_flush();// 出力バッファリングの終了
flush(); // これまでの内容をブラウザに送信
ob_implicit_flush(); // 出力関数毎にブラウザに送信するようにする

while(hogejob_status()) // 処理が終わったかどうかを判断
{
print ".\n";
sleep(10);
}

print "
complete";

hogehoge(); // 後処理

投稿者 muuming : 10:45 | コメント (0)

2007年08月07日

配列の違い


$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);

print_r($result);


$array1 に複数存在する場合でも全て同様に処理されます。 この出力は次の通りです。

Array
(
[1] => blue
)

投稿者 muuming : 12:24 | コメント (0)

2007年08月06日

requireとincludeの違いについて

« PHP:str_replace()関数 | メイン | PHP:global »
2005年10月17日
PHP:require()関数・require_once()関数

require()関数:外部ファイルを取り込む
require_once()関数:外部ファイルを1回だけ取り込む
※機能はほぼ一緒なので、require_once()関数を優先的に使いましょう。

require()関数とrequire_once()関数外の違いは、require()関数は外部ファイルを取り込む回数に制限がないのに対して、require_once()関数は外部ファイルを1回だけ取り込みます。

たとえば、a.phpにb.phpをrequire()関数で取り込んだ場合、b.phpにa.phpのrequire()・include()命令が記述されていた場合、無限ループになります。これを防ぐためにも、何らかの特別な事情がない限りはrequire_once()関数を優先的に使いましょう。

※requireとincludeの違いについて
基本的に「外部ファイルを取り込む」という機能は同じですが、取り込みに失敗した時のエラー出力方法が違います。
require:エラー時にFatal Errorを出力し、プログラム処理を終了
include:エラー時にWarning(エラーメッセージ)を出力するが、処理は続行

エラーが起きても処理を続行したいプログラムの場合にはinclude、処理を中断したい場合にはrequireを使用しましょう。

投稿者 muuming : 18:22

2007年05月28日

正規表現 エスケープしなければいけない文字

正規表現 エスケープしなければいけない文字
. ^ $ [ ] * + ? | ( )

こんだけ

投稿者 muuming : 14:28 | コメント (0)

URLエンコード

「a~z」「A~Z」「0~9」「'」「.」「-」「*」「)」「(」「_」

 これらの文字は、エンコードが不要な文字である。これら以外の文字は、「%22」(「"」の場合)や「%e3%81%82」(「あ」の場合)*のように、その文字の文字コードを16進数文字列に変換し、2けたごとに「%」を付けた形式に変換される。ただし例外的に、半角スペースは「+」に変換される。

つまり エンコード後は
「a~z」「A~Z」「0~9」「'」「.」「-」「*」「)」「(」「_」「+」「%」
が使用される。

投稿者 muuming : 14:09 | コメント (0)

2007年03月30日

phplot.php グラフつくり

phplot.php バグあるのかな?

var $use_ttf = true; // Use True Type Fonts?
var $ttf_path = '.'; // Default path to look in for TT Fonts.
var $default_ttfont = 'ipag.ttf';

このパスの指定を行うとうまく動作しない
例)
var $ttf_path = '/usr/local/font'; //などなど
同じ階層にフォントを入れ込まなければ日本語フォントでの動作しない。


http://www.artichow.org/features に作成例があるがオフランスなのでわけりまへん

使い方~

require_once("phplot/phplot.php"); // PHPlotのロード
// グラフオブジェクトの生成
$graph = new PHPlot(450,280); 横×縦かな
$graph->SetDataType("text-data"); //グラフの種類指定
・thinbarline … 棒グラフの棒を線状にして描画します
・area … エリアグラフを描画します
・squared … 折れ線グラフで0→1などのグラフを方形に描画します
・lines … 折れ線グラフを描画します
・linepoints …折れ線グラフにデータの点をプロットしながら描画します
・points … データの点のみをプロットして描画します
・stackedbars … 各要素を積み重ねた棒グラフを描画します
・bars … 棒グラフを描画します(未指定の場合にはbarsがセット。)

// データの設定
$data = array(
array('1980', 20, 60, 45),
array('1985', '', 40, 20),
array('1990', 10, 55, 10),
array('1995', 30, 65, 20),
array('2000', 50, 50, 40),
array('2005', 70, 45, 60),
);

//このデータをセット
$graph->SetDataValues($data);

//いろいろセットメソッド名 引数 処理
色指定系のメソッド
$graph->SetBackgroundColor($color); $color … 色名*4
*4.rgb_inc.phpで定義された色名を指定 グラフ背景色を設定するメソッド
$graph->SetTitleColor($color); $color … 色名
タイトル文字の色を指定するメソッド
$graph->SetTextColor($color); $color … 色名
目盛りの文字の色を指定するメソッド
$graph->SetLightGridColor($color); $color … 色名
目盛り補助線の色を指定するメソッド(軸線色はSetGridColorメソッド)
$graph->SetGridColor($color); $color … 色名
軸線の色を指定するメソッド
$graph->SetIndexColor($color); $color … 色名
PHPlotで使用する色定義オブジェクトを生成するメソッド
$graph->SetIndexDarkColor($color); $color … 色名
SetIndexColorメソッドより0x30分だけ暗い色を返すメソッド
棒グラフの影の部分等で使われていると思われ。
$graph->SetDefaultStyles(); なし
内部メソッド
コンストラクタの内部でコールされる
$graph->SetPlotBgColor($color); $color … 色名
プロットする領域の背景色を設定するメソッド
SetDrawPlotAreaBackgroundメソッドでTRUEにした時に有効
$graph->SetTickColor($color); $color … 色名
軸上の目盛り線の色を指定するメソッド
$graph->SetLabelColor($color); $color … 色名
ラベル文字の色を指定するメソッド
SetTitleColorメソッドと全く同じ
$graph->SetImageBorderColor($color); $color … 色名
画像の枠色を指定するメソッド
枠の有無はSetImageBorderStyleメソッドで指定(デフォルト無効)
$graph->SetTransparentColor($color); $color … 色名
透過色を指定するメソッド
$graph->SetRGBArray($color_array); $color_array … 変換方法
 small … メソッド内の色変換テーブルで変換
 large … rgb.inc.phpを利用
内部メソッド
色変換テーブルをセットするメソッド
$graph->SetRGBColor($color); $color … 色
 RGBを10進配列(255,255,255)で渡す  RGBを16進数(#FFFFFF)で渡す
指定した色を作成するメソッド
$graph->SetDataColors($data,border); $data … データの色(配列)
$border … 棒の枠色(配列)
グラフの要素の色を指定するメソッド
borderは棒グラフでshading無しの場合に有効
$graph->SetDataBorderColors($br); $br … 棒の枠色(配列)
内部メソッド
SetDataColorsメソッドから呼び出し
過去の互換性維持の為に存在(使わない方が良い)
$graph->SetErrorBarColors($err); $err … 閾値表示線(レーダーチャートっぽいやつ)の色
閾値表示線(レーダーチャートっぽいやつ)の色を指定するメソッド
$graph->SetDefaultDashedStyle($style); $style … 破線の表示形式
 4-3 … 4pixelが色付きで3pixelが透過
 2-3-1-2 … 2pixelが色付きで3pixelが透過で1pixelが色付きで2pixelが透過
 numcol-numtrans-numcol-numtrans...の形で指定
破線の表示形式のデフォルト値を指定するメソッド
$graph->SetDashedStyle($ndxcol); $ndxcol … 破線の色
内部メソッド
破線の色を指定するメソッド
$graph->SetLineWidths($lw); $lw … 線の太さ
内部メソッド
線の太さを指定するメソッド
$graph->SetLineStyle($ls); $ls … 線の形式
 solid … 単線
 dashed … 破線
内部メソッド
線の形式を指定するメソッド
フォント指定系のメソッド
$graph->SetLineSpacing($spc); $spc … 行間
行間の高さを指定するメソッド
$graph->SetUseTTF($ttf); $ttf … 使用するフォント
使用するフォントを指定するメソッド
未コール時にはTrueTypeフォントを使わない
$graph->SetTTFPath($path); $path … 使用するフォントファイルへのパス
使用するフォントファイルへのパスを指定するメソッド
$graph->SetDefaultTTFont($font); $font … 設定するフォント
デフォルトのTrueTypeフォントを指定するメソッド
SetUseTTFメソッドと合わせて使用
$graph->SetDefaultTTFont($font); $font … 設定するフォント
デフォルトフォントを指定するメソッド
$graph->SetDefaultFonts(); なし
内部メソッド
デフォルトフォントを設定するメソッド
$graph->SetFont($elem, $font, $size); $elem … 表示する場所
 generic … 下のもの以外
 title … タイトル
 legend … 要素名表示Box
 x_label … X軸ラベル
 y_label … Y軸ラベル
 x_title … X軸タイトル
 y_title … Y軸タイトル
$font … フォント
$size … フォントサイズ
内部メソッド
デフォルトフォントを設定するメソッド
$graph->TTFBoxSize($size, $angle, $font, $string); $size … フォントサイズ
$angle … 回転角度
$font … フォント
$string … 表示文字
内部メソッド
TrueTypeフォントの表示領域を設定するメソッド
回転させる時などに必要
$graph->DrawText($font, $angle, $x_pos, $y_pos,
   $color, $text, $halign, $valign); $font … フォント
$angle … 回転角度
$x_pos … X軸位置
$y_pos … X軸位置
$color … 色
$text … 表示文字
$halign … 水平位置
 left … 左寄せ
 right … 右寄せ
 center … 中心
$valign … 垂直位置
 bottom … 下揃え
 center … 中心
テキストを表示するメソッド
ファイル入出力系のメソッド
$graph->PrintImage(); なし
DrawGraphメソッドで作成したグラフ画像を出力するメソッド
$graph->SetIsInline($ii); $ii … TRUE / FALSE
画像ファイルをインライン出力するか指定するメソッド
デフォルトはFALSE(出力しない)
SetOutputFileメソッドのファイルに出力するにはTRUEを指定
$graph->SetFileFormat($format); $format … 出力する画像形式
 jpg … JPEG
 png … PNG
 gif … GIF
 wbmp … Windows Bitmap
出力するグラフの画像形式を指定するメソッド
$graph->SetOutputFile($output_file); $output_file … 出力画像ファイル名
画像ファイルの出力先を指定するメソッド
SetIsInlineメソッドと合せて使用
※コンストラクタの際に指定していれば再指定不要
$graph->SetBgImage($input_file, $mode); $input_file … 画像ファイル名
$mode … 配置方法
 centeredtile … 中心に配置
 tile … タイル状(繰り返し配置)
 scale … 領域全体にあわせる
背景画像ファイルを指定するメソッド
描画はDrawBackgroundメソッド
$graph->SetPlotAreaBgImage($input_file, $mode); $input_file … 画像ファイル名
$mode … 配置方法
 centeredtile … 中心に配置
 tile … タイル状(繰り返し配置)
 scale … 領域全体にあわせる
プロットエリアの背景画像ファイルを指定するメソッド
描画はDrawPlotAreaBackgroundメソッド
$graph->PrintError($error_message); $error_message … エラー文字列
内部メソッド
エラー文字列をecho出力するメソッド
$graph->DrawError($error_message, $x, $y); $error_message … エラー文字列
$x … 表示X軸位置
$y … 表示Y軸位置
内部メソッド
エラー文字列を画像内に表示するメソッド
ラベル指定系のメソッド
$graph->SetXDataLabelPos($xdlp); $xdlp … X軸表示位置
 plotdown : グラフ上部
 plotup : グラフ下部
 both : plotdown/plotupの両方
 xaxis : X軸(X=0)上
 all : plotdown/plotup/xaxisの全部
 none : 表示しない
X軸ラベルの表示位置を指定するメソッド
$graph->SetYDataLabelPos($ydlp); $ydlp … Y軸表示位置
 plotleft : グラフ左部
 plotright : グラフ右部
 both : plotleft/plotrightの両方
 yaxis : Y軸(Y=0)上
 all : plotleft/plotright/yaxisの全部
 none : 表示しない
Y軸ラベルの表示位置を指定するメソッド
$graph->SetXTickLabelPos($xtlp); $xtlp … X軸上表示位置
 plotdown : グラフ上部
 plotup : グラフ下部
 both : plotdown/plotupの両方
 xaxis : X軸(X=0)上
 all : plotdown/plotup/xaxisの全部
 none : 表示しない
X軸上目盛りの表示位置を指定するメソッド
$graph->SetYTickLabelPos($ytlp); $ytlp … Y軸上表示位置
 plotleft : グラフ左部
 plotright : グラフ右部
 both : plotleft/plotrightの両方
 yaxis : Y軸(Y=0)上
 all : plotleft/plotright/yaxisの全部
 none : 表示しない
Y軸上目盛りの表示位置を指定するメソッド
$graph->SetXLabelType($xlt); $xlt … 表示形式
 data : 数値
 time : 日時
 title : 0,1,2,...で指定せず
X軸ラベルの表示形式を指定するメソッド
$graph->SetYLabelType($ylt); $ylt … 表示形式
 data : 数値
 time : 日時
Y軸ラベルの表示形式を指定するメソッド
$graph->SetXTimeFormat($xtf); $xtf … 時間の表示形式
X軸の時間の表示形式を指定するメソッド
SetXLabelType('time')の時に有効
デフォルトは'%H:%m:%s'
$graph->SetYTimeFormat($ytf); $ytf … 時間の表示形式
Y軸の時間の表示形式を指定するメソッド
SetYLabelType('time')の時に有効
デフォルトは'%H:%m:%s'
$graph->SetXLabelAngle($xla); $xla … 角度
X軸のラベル文字の傾きを指定するメソッド
Fixedフォントは90°のみ利用可能
$graph->SetYLabelAngle($yla); $yla … 角度
Y軸のラベル文字の傾きを指定するメソッド
Fixedフォントは90°のみ利用可能
一般のメソッド
$graph->SetPlotType($pt); $pt … グラフの種類*5
 *5.前述のグラフの種類指定を参照 グラフの種類を指定するメソッド
$graph->SetDataType($dt); $dt … データ型を指定
データ型を指定するメソッド
 $text-data … ('label', y1, y2, y3, ...)
 $text-data-single … ('label', data)
 $data-data … ('label', x, y1, y2, y3, ...)
 $data-data-error … ('label', x, y1, e1+, e1-, y2, e2+, e2-, ...)
デフォルトはtext-data
$graph->SetDataValues(&$dv); $dv … グラフにするデータ(へのポインタ)
SetDataTypeメソッドで指定した型式の配列を渡します
$graph->SetPlotAreaWorld($xmin, $ymin,
   $xmax, $ymin); $xmin … X軸の最小値(データ値)
$ymin … Y軸の最小値(データ値)
$xmax … X軸の最大値(データ値)
$ymax … Y軸の最大値(データ値)
グラフの表示粋(Xのmin~max,Yのmin~max)を指定するメソッド
値はデータ値で指定
$graph->SetTitle($title); $title … プロットエリア上部に表示したい文字
プロットエリアの上に文字(タイトル)を指定するメソッド
$graph->SetXTitle($title, $xpos); $title … X軸に表示したい文字
$xpos … 文字の位置
 plotdown : グラフ上部
 plotup : グラフ下部
 both : plotdown/plotupの両方
 none : 表示しない
X軸のラベル文字(タイトル)を指定するメソッド
$xpos省略時はplotdown
$graph->SetYTitle($title, $ypos); $title … Y軸に表示したい文字
$ypos … 文字の位置
 plotleft : グラフ左部
 plotright : グラフ右部
 both : plotleft/plotrightの両方
 none : 表示しない
Y軸のラベル文字(タイトル)を指定するメソッド
$ypos省略時はplotleft
$graph->SetLegend($leg); $leg … 要素名の配列
要素名表示Boxの内容を指定するメソッド
$graph->CheckOption($opt, $acc, $func); $opt … チェックする文字列
$acc … 指定可能な要素
$func … 呼ばれる関数名
内部メソッド
チェックする文字列が指定可能な要素に含まれるかチェックし、
含まれるならfuncを呼ぶメソッド
$graph->SetBrowserCache($browser_cache); $browser_cache … TRUE / FALSE
ブラウザにイメージヘッダを送信するか指定するメソッド
デフォルトはFALSE(送信しない)
送信するとブラウザのキャッシュが有効になります
$graph->SetPrintImage($pi); $pi … TRUE / FALSE
複数グラフイメージの生成を許可するメソッド?
デフォルトはTRUE(許可する?)
$graph->SetLegendPixels($x, $y); $x … X軸の配置位置(pixel)
$y … Y軸の配置位置(pixel)
要素名表示Boxの位置(pixel)を指定するメソッド
$graph->SetLegendWorld($x, $y); $x … X軸の配置位置(データ値)
$y … Y軸の配置位置(データ値)
要素名表示Boxの位置(データ値)を指定するメソッド
$graph->SetPlotBorderType($pbt); $pbt … プロットエリアの枠表示形式
 left : 左のみ
 sides : 両脇
 none : なし
 full : 全部
プロットエリアの枠の表示形式を指定するメソッド
デフォルトはsides
$graph->SetImageBorderType($sibt); $sibt … グラフ画像枠表示形式
 raised : border-style:outsetな枠
 plain : 単線の枠
 none : 枠なし
グラフ画像枠表示形式を指定するメソッド
デフォルトはnone
$graph->SetDrawPlotAreaBackground($dpab); $dpab … TRUE / FALSE
プロットする領域の背景色等を有効にするメソッド
$dpabをTRUEにすると有効になる(デフォルト無効)
$graph->SetDrawYGrid($dyg); $dyg … TRUE / FALSE
Y軸の原点線を有効にするメソッド
$dygをFALSEにすると無効になる(デフォルト有効)
$graph->SetDrawXGrid($dxg); $dxg … TRUE / FALSE
X軸の原点線を有効にするメソッド
$dxgをTRUEにすると有効になる(デフォルト無効)
$graph->SetDrawDashedGrid($ddg); $ddg … TRUE / FALSE
目盛り線の破線処理を設定するメソッド
$ddgをFALSEにすると無効(普通の線)になる(デフォルト有効)
$graph->SetDrawXDataLines($dxdl); $dxdl … TRUE / FALSE
プロットした点からX軸にガイド線を引くか設定するメソッド
$dxdlをTRUEにすると有効になる(デフォルト無効)
$graph->SetDrawYDataLines($dydl); $dydl … TRUE / FALSE
プロットした点からY軸にガイド線を引くか設定するメソッド
$dydlをTRUEにすると有効にしたいらしいが未実装とのこと
$graph->SetShading($s); $s … 影の大きさ(pixel)
影の大きさを指定するメソッド
bars/pie/stackedbarsなどの影のあるグラフ型で有効
未設定時は5 pixels
$graph->SetYAxisPosition($pos); $pos … Y軸の設置位置(データ値で入力)
Y軸(通常はY=0)の位置を指定するメソッド
※バグっててX軸になってない?
$graph->SetXAxisPosition($pos); $pos … X軸の設置位置(データ値で入力)
X軸(通常はX=0)の位置を指定するメソッド
※バグっててY軸になってない?
$graph->SetXScaleType($xst); $xst … X軸スケールを指定
 linear … 自然数
 log … 対数
X軸のスケールを指定するメソッド
デフォルトはlinear。対数にする時にlogを指定
$graph->SetYScaleType($yst); $yst … Y軸スケールを指定
 linear … 自然数
 log … 対数
Y軸のスケールを指定するメソッド
デフォルトはlinear。対数にする時にlogを指定
$graph->SetPrecisionX($prec); $prec … X軸目盛りの少数桁数を指定
デフォルトは整数表示
$graph->SetPrecisionY($prec); $prec … Y軸目盛りの少数桁数を指定
デフォルトは整数表示
$graph->SetErrorBarLineWidth($seblow); $seblow … 閾値表示線(レーダーチャートっぽいやつ)の幅
閾値表示線(レーダーチャートっぽいやつ)の幅を指定するメソッド
$graph->SetLabelScalePosition($blp); $blp … PlotTypeがpieの時のラベル位置
PlotTypeがpie(円グラフ)の時のラベル位置(水平位置)を指定
-0.7ぐらいで左端で0.7ぐらいが右端。0が真ん中?
$graph->SetErrorBarSize($ebs); $ebs … データNG時の棒の長さ?
閾値表示線(レーダーチャートっぽいやつ)の長さを指定するメソッド?
$graph->SetErrorBarShape($ebs); $ebs … データNG時の棒の形?
 tee … 縦線の上下に横線も付与(Iっぽい感じ)
 line … 縦線のみ(|っぽい感じ)
閾値表示線(レーダーチャートっぽいやつ)表示形式を指定するメソッド
$graph->SetPointShapes($pt); $pt … プロットする点の形状
 halfline … -
 line … -
 plus … +
 cross … x
 rect … ■
 circle … ●
 dot … ・
 diamond … ◆
 triangle … ▼(中心をデータに合わせる)
 trianglemid … ▼(下をデータに合わせる)
プロットする点の形状を指定するメソッド
要素毎の配列渡しなので
 $graph->SetPointShapes('triangle','circle');
のように要素毎に指定できます。
$graph->SetPointSizes($ps); $ps … プロットする点の大きさ
プロットする点の大きさを指定するメソッド
要素毎の配列渡しなので
 $graph->SetPointSizes( 5, 3 );
のように要素毎に指定できます。
$graph->SetDrawBrokenLine($bl); $bl … TRUE / FALSE
欠落したデータ部の線を引くかを指定するメソッド
$blをTRUEにすると線を引く(デフォルトはFALSE)
$graph->PadArrays(); なし
内部メソッド
要素毎の色、線の太さ等の情報を次の要素にものに移動するメソッド?
$graph->FindDataLimits(); なし
内部メソッド
データの上下限を検出するメソッド
$graph->CalcMargins(); なし
内部メソッド
ラベル等のマージンを計算するメソッド
$graph->SetMarginsPixels($lm, $rm, $tm, $bm); $lm … 左マージン(pixel)
$rm … 右マージン(pixel)
$tm … 上マージン(pixel)
$bm … 下マージン(pixel)
プロットエリアとラベルのマージンを指定するメソッド
0のときにプロットエリア=グラフ全体になる
$graph->SetPlotAreaPixels($x1, $y1, $x2, $y2); $x1 … X軸の最小値(pixel)
$y1 … Y軸の最小値(pixel)
$x2 … X軸の最大値(pixel)
$y2 … Y軸の最大値(pixel)
グラフの表示粋(Xのmin~max,Yのmin~max)を指定するメソッド?
値はpixel値で指定?
$graph->CalcBarWidths(); なし
内部メソッド
PlotTypeがbarsの時に棒の幅を算出するメソッド?
$graph->CalcTranslation(); なし
内部メソッド
スケール(対数とか)を算出するメソッド?
$graph->xtr($x); $x … データ値
データ値をPHPlotのX軸描画値(pixel位置)に変換するメソッド
※DrawDashedLineメソッドで線を引く時に便利
$graph->ytr($y); $y … データ値
データ値をPHPlotのY軸描画値(pixel位置)に変換するメソッド
※DrawDashedLineメソッドで線を引く時に便利
$graph->FormatLabel($pos, $lab); $pos … ラベルの整形ルール
 x … X軸のデータ型で整形  y … Y軸のデータ型で整形 $lab … 整形する文字
ラベルの文字を整形するメソッド
※整形ルールはSetDataTypeメソッドで指定したデータ型に依存
目盛り指定系メソッド
$graph->SetXTickIncrement($ti); $ti … X軸の目盛り幅(データ値)
X軸の目盛り幅を指定するメソッド
値はデータ値で指定
SetNumXTicksメソッドとは排他
$graph->SetYTickIncrement($ti); $ti … Y軸の目盛り幅(データ値)
Y軸の目盛り幅を指定するメソッド
値はデータ値で指定
SetNumYTicksメソッドとは排他
$graph->SetNumXTicks($nt); $nt … X軸の目盛り数
X軸上に配置する目盛りの数を指定するメソッド
SetXTickIncrementメソッドとは排他
$graph->SetNumYTicks($nt); $nt … Y軸の目盛り数
Y軸上に配置する目盛りの数を指定するメソッド
SetYTickIncrementメソッドとは排他
$graph->SetYTickPos($tp); $tp … Y軸上の目盛り線の配置場所
 plotleft : グラフ左
 plotright : グラフ右
 both : plotleft/plotrightの両方
 yaxis : Y=0の場所
 none : 表示しない
Y軸上の目盛り線の配置場所を指定するメソッド
デフォルトはplotleft
$graph->SetXTickPos($tp); $tp … X軸上の目盛り線の配置場所
 plotdown : グラフ下
 plotup : グラフ上
 both : plotdown/plotupの両方
 xaxis : Y=0の場所
 none : 表示しない
X軸上の目盛り線の配置場所を指定するメソッド
デフォルトはplotdown
$graph->SetSkipTopTick($skip); $skip … TRUE / FALSE
Y軸一番上の目盛り線の表示を指定するメソッド
デフォルトはFALSE(表示する)
$graph->SetSkipBottomTick($skip); $skip … TRUE / FALSE
Y軸一番下の目盛り線の表示を指定するメソッド
デフォルトはFALSE(表示する)
$graph->SetSkipLeftTick($skip); $skip … TRUE / FALSE
X軸一番左の目盛り線の表示を指定するメソッド
デフォルトはFALSE(表示する)
$graph->SetSkipRightTick($skip); $skip … TRUE / FALSE
X軸一番右の目盛り線の表示を指定するメソッド
デフォルトはFALSE(表示する)
$graph->SetXTickLength($xln); $xln … X軸上の目盛り線の長さ(下方向)
X軸上の目盛り線の長さ(下方向)を指定するメソッド
$graph->SetYTickLength($yln); $yln … Y軸上の目盛り線の長さ(左方向)
Y軸上の目盛り線の長さ(左方向)を指定するメソッド
$graph->SetXTickCrossing($xc); $xc … X軸上の目盛り線の長さ(上方向)
X軸上の目盛り線の長さ(上方向)を指定するメソッド
$graph->SetYTickLength($yln); $yln … Y軸上の目盛り線の長さ(右方向)
Y軸上の目盛り線の長さ(右方向)を指定するメソッド
描画系のメソッド
$graph->DrawBackground(); なし
内部メソッド
背景を描画するメソッド
$graph->DrawPlotAreaBackground(); なし
内部メソッド
プロットエリアの背景を描画するメソッド
$graph->tile_img($file, $xorig, $yorig,
   $width, $height, $mode); $file … 画像ファイル名
$xorig … 配置場所(X軸)
$yorig … 配置場所(Y軸)
$width … 画像の配置幅
$height … 画像の配置高さ
$mode … 配置方法
 centeredtile … 中心に配置
 tile … タイル状(繰り返し配置)
 scale … 領域全体にあわせる
内部メソッド
背景画像を配置するメソッド
$graph->DrawImageBorder(); なし
内部メソッド
グラフの枠(raised/plain)を描画するメソッド
枠の指定はSetImageBorderTypeメソッドで指定
$graph->DrawTitle(); なし
内部メソッド
グラフのタイトルを描画するメソッド
$graph->DrawXTitle(); なし
内部メソッド
グラフのX軸タイトルを描画するメソッド
$graph->DrawYTitle(); なし
内部メソッド
グラフのY軸タイトルを描画するメソッド
$graph->DrawYAxis(); なし
内部メソッド
グラフのY軸(Y=0)を描画するメソッド
$graph->DrawXAxis(); なし
内部メソッド
グラフのX軸(X=0)を描画するメソッド
$graph->DrawYTick($ylab, $ypix); $ylab … 表示するテキスト
$ypix … 表示する位置(Y軸)
内部メソッド
Y軸の目盛り線(1本)を描画するメソッド
DrawYTicksメソッドから呼び出される
$graph->DrawYTicks(); なし
内部メソッド
Y軸の目盛り線を描画するメソッド
$graph->DrawXTicks(); なし
内部メソッド
X軸の目盛り線を描画するメソッド
$graph->DrawPlotBorder(); なし
内部メソッド
プロットエリアの枠を描画するメソッド
SetPlotBorderTypeメソッドで指定した枠で描画
$graph->DrawXDataLabel($xlab, $xpos, $row); $xlab … ラベルに表示するテキスト
$xpos … X軸の配置位置
$row … ラベルの行数(要素数)?
内部メソッド
X軸のラベル(文字)を描画するメソッド
$graph->DrawXDataLine($xpos, $row); $xpos … X軸の配置位置
$row … ラベルの行数(要素数)?
内部メソッド
X軸のラベル(線)を描画するメソッド
$graph->DrawLegend($x1, $y1, $boxtype); $x1 … X軸の配置位置
$y1 … Y軸の配置位置
$boxtype … 未実装?
内部メソッド
要素名表示Boxを描画するメソッド
$graph->DrawAxisLegend(); なし
未実装のメソッド
グラフ描画系のメソッド
$graph->DrawGraph(); なし
グラフを描画するメソッド
$graph->DrawPieChart(); なし
内部メソッド
円グラフを描画するメソッド
$graph->DrawDotError(); なし
内部メソッド
plot_typeがpointsかつdata_typeがdata-data-errorの時のグラフを描画するメソッド
$graph->DrawDots(); なし
内部メソッド
plot_typeがpointsかつdata_typeがdata-dataの時のグラフを描画するメソッド
$graph->DrawThinBarLines(); なし
内部メソッド
plot_typeがthinbarlineの時のグラフを描画するメソッド
$graph->DrawYErrorBar(); なし
内部メソッド
DrawDotErrorメソッド、DrawLinesErrorメソッドから呼ばれ、閾値を描画するメソッド?
$graph->DrawDot($x_world, $y_world, $record, $color); $x_world … X軸の配置位置(データ値)
$y_world … Y軸の配置位置(データ値)
$record … ???
$color … 点の色
内部メソッド
プロットする点を描画するメソッド?
$graph->DrawArea(); なし
内部メソッド
plot_typeがareaの時のグラフを描画するメソッド
$graph->DrawLines(); なし
内部メソッド
plot_typeがlinesかつdata_typeがdata-data-error以外の時のグラフを描画するメソッド
$graph->DrawLinesError(); なし
内部メソッド
plot_typeがlinesかつdata_typeがdata-data-errorの時のグラフを描画するメソッド
$graph->DrawSquared(); なし
内部メソッド
plot_typeがsquaredの時のグラフを描画するメソッド
$graph->DrawBars(); なし
内部メソッド
plot_typeがbarsの時のグラフを描画するメソッド
$graph->DrawStackedBars(); なし
内部メソッド
plot_typeがstackedbarsの時のグラフを描画するメソッド
$graph->DrawDashedLine($x1, $y1, $x2, $y2,
   $dash_length, $dash_space, $color); $x1 … 開始点(X軸位置)
$y1 … 開始点(Y軸位置)
$x2 … 終了点(X軸位置)
$y2 … 終了点(Y軸位置)
$dash_length … 破線の色有り部分の長さ
$dash_space … 破線の色無し部分の長さ
$color … 破線の色
任意の線を描画するメソッド
DrawGraphメソッド後に線を引く場合に使用
x1,y1,x2,y2はxtrメソッド、ytrメソッドでデータ値に直してセットすると便利

例)
$graph->SetXTitle("年"); //横軸タイトル
$graph->SetNewPlotAreaPixels(40,100,400,240);
$graph->SetPlotAreaWorld(0,0,7,80);

// グラフの表示
$graph->DrawGraph();

投稿者 muuming : 13:57 | コメント (0)

2006年10月26日

画像を投げる

//画像表示ヘッダ送信
$fsize = filesize ($graphics);
header("Content-type:image/gif");//画像?
header("Content-Length: " . $fsize);//サイズ
set_magic_quotes_runtime(0);
$fd = fopen ($graphics, "r");
$contents = fread ($fd, $fsize);
fclose ($fd);
for($i=0;$i < $fsize;$i++){
print substr($contents,$i,1);
}

こげなかんじ

投稿者 muuming : 06:57 | コメント (0)

2006年06月07日

mb_convert_kana

mb_convert_kana()は、文字列 strに関して「半角」-「全角」変換を行い、変 換された文字列を返します。この関数は、日本語のみで使用可能です。

option は変換オプションです。デフォルト値 は、"KV"です。

encoding は文字エンコーディングで、省略さ れた場合は内部文字エンコーディングが使用されます。

使用可能な変換オプション

オプション : 以下のオプションを変換時に指定します。デフォルトは
"KV"です。
"r" : 「全角」英字を「半角」に変換
"R" : 「半角」英字を「全角」に変換
"n" : 「全角」数字を「半角」に変換
"N" : 「半角」数字を「全角」に変換
"a" : 「全角」英数字を「半角」に変換
"A" : 「半角」英数字を「全角」に変換
("a", "A" オプションに含まれる文字は、U+0022, U+0027, U+005C,
U+007Eを除く U+0021 - U+007E の範囲です)
"s" : 「全角」スペースを「半角」に変換 (U+3000 -> U+0020)
"S" : 「半角」スペースを「全角」に変換 (U+0020 -> U+3000)
"k" : 「全角片仮名」を「半角片仮名」に変換
"K" : 「半角片仮名」を「全角片仮名」に変換
"h" : 「全角ひら仮名」を「半角片仮名」に変換
"H" : 「半角片仮名」を「全角ひら仮名」に変換
"c" : 「全角かた仮名」を「全角ひら仮名」に変換
"C" : 「全角ひら仮名」を「全角かた仮名」に変換
"V" : 濁点付きの文字を一文字に変換。"K","H"と共に使用します。

丸パクリだw

使い方
/* 「仮名」を全て「全角カタカナ」に変換します */
$str = mb_convert_kana($str, "KVC");

投稿者 muuming : 14:20 | コメント (0)

2006年04月25日

php コマンドラインでの引数わたし

■ 引数の受け渡し

PHPをコマンドラインで実行すると、コマンドラインで与えた引数の情報が
$argc、$argvという変数に格納されます。

$argc : 引数の数
$argv : 引数が格納された配列

普通、最低でも引数としてファイル名が指定されているので、

$argc : 1
$argv[0] : ファイル名(パス)
しらなかった・・

投稿者 muuming : 16:53 | コメント (0)

php コマンドラインでの引数わたし

■ 引数の受け渡し

PHPをコマンドラインで実行すると、コマンドラインで与えた引数の情報が
$argc、$argvという変数に格納されます。

$argc : 引数の数
$argv : 引数が格納された配列

普通、最低でも引数としてファイル名が指定されているので、

$argc : 1
$argv[0] : ファイル名(パス)
しらなかった・・

投稿者 muuming : 16:53 | コメント (0)

2006年03月02日

エラーを表示させない

$ファイルハンドル = fopen (ファイル,モード);

開けれない場合はエラーになって エラー文が表示されるが
$ファイルハンドル = @fopen (ファイル,モード);

これでもって 表示はされんくなります

投稿者 muuming : 11:37 | コメント (0)

2005年11月21日

ファイルの読み込み

$fp = fopen ("/home/logs/sh/yomu.txt",r);
$line = fgets($fp);
print_r($line);
$line = fgets($fp);
print_r($line);
$line = fgets($fp);
print_r($line);
$line = fgets($fp);
print_r($line);
$line = fgets($fp);
print_r($line);
$line = fgets($fp);
print_r($line);
exit;

fgetsするたびに 改行もしくはEOFまでファイルポインタが移動

すると次fgetsするとそこから読まれる。

なのでファイル全部を配列に入れたければ以下のような感じ

$fp = fopen ("file",r);
while (!FEof ($fp)){
$files[] = fgets($fp);
}


全体読み込むには
$line = file('/home/hoge/list');
で $lineに配列として読み込めるが この場合ファイルハンドルは関係ないらしい。

投稿者 muuming : 20:12 | コメント (0)

2005年11月17日

文字列の置換

str_replace("置換対象文字列","置換後の文字列","最初の文字列");


置換対象 置換後の文字列 最初の文字列とも配列にする事が可能

$chikan = array( "<",">");
$chikan_go = array( ">","<");

str_replace("$chikan","$chikan_go","最初の文字列");

最初の文字列の中の<>が入れ替わるかたちにできます。

投稿者 muuming : 14:23 | コメント (0)

2005年11月15日

date の使い方

こげな感じ

date (フォーマット,タイムスタンプ);
だけど 今の時刻だったらタイムスタンプはいらね。

// Prints something like: Wednesday
echo date("l");
print "
";

// Prints something like: Wednesday 15th of January 2003 05:51:38 AM
echo date("l dS of F Y h:i:s A");
print "
";
// Prints: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));
print "
";
?>

 以下フォーマット関係
format character 説明 戻り値の例
a 午前または午後(小文字) am または pm
A 午前または午後(大文字) AM または PM
B Swatch インターネット時間 000 から 999
d 日。二桁の数字(先頭にゼロがつく場合も) 01 から 31
D 曜日。3文字のテキスト形式。 Mon から Sun
F 月。フルスペルの文字。 January から December
g 時。12時間単位。先頭にゼロを付けない。 1 から 12
G 時。24時間単位。先頭にゼロを付けない。 0 から 23
h 時。数字。12 時間単位。 01 から 12
H 時。数字。24 時間単位。 00 から 23
i 分。先頭にゼロをつける。 00 to 59
I (大文字の i) サマータイム中か否か 1ならサマータイム中。 0ならそうではない。
j 日。先頭にゼロをつけない。 1 から 31
l (小文字の 'L') 曜日。フルスペル形式。 Sunday から Saturday
L 閏年であるかどうかを表す論理値。 1なら閏年。0なら閏年ではない。
m 月。数字。先頭にゼロをつける。 01 から 12
M 月。3文字形式。 Jan から Dec
n 月。数字。先頭にゼロをつけない。 1 から 12
O グリニッジ標準時(GMT)との時間差 Example: +0200
r RFC 822 フォーマットされた日付 例: Thu, 21 Dec 2000 16:01:07 +0200
s 秒。先頭にゼロをつける。 00 から 59
S 英語形式の序数を表すサフィックス。2 文字。 st, nd, rd または th。 jと一緒に使用する ことができる。
t 指定した月の日数。 28 から 31
T このマシーンのタイムゾーンの設定。 例: EST, MDT ...
U Unix 時(1970年1月1日0時0分0秒)からの秒数 time()も参照
w 曜日。数値。 0 (日曜)から 6 (土曜)
W ISO-8601 月曜日に始まる年単位の週番号 (PHP 4.1.0で追加) 例: 42 (1年の第42週目)
Y 年。4 桁の数字。 例: 1999または2003
y 年。2 桁の数字。 例: 99 または 03
z 年間の通算日。数字。 0 から 366
Z タイムゾーンのオフセット秒数。 UTCの西側のタイムゾーン用のオフセットは常に負です。そして、 UTCの東側のオフセットは常に正です。 -43200 から 43200


2005-11-13 13:05:02 これは date ("Y-m-d H:i:s"); こんななりますね

投稿者 muuming : 20:13 | コメント (0)

2005年11月11日

isError

PEAR.php の class PEAR を継承していたら使えるらしい。
DB.phpも継承しているので使っている。
if ( isError $this-> connect ()){

}

てな感じ?

投稿者 muuming : 17:41 | コメント (0)

2005年11月09日

PHP 比較演算子

PHP 比較演算子

例 名前 結果
$a == $b 等しい $a が $b に等しい時にTRUE。
$a === $b 等しい $a が $b に等しく同じ型でである場合に TRUE。(PHP 4で導入)
$a != $b 等しくない $a が $b に等しくない場合にTRUE。
$a <> $b 等しくない $aが$bに等しくない場合にTRUE
$a !== $b 等しくない $a が $b と等しくないか、同じ型でない場合に TRUE。(PHP 4で導入)
$a < $b より少ない $a が $b より少ない時にTRUE。
$a > $b より多い $a が $b より多い時にTRUE。
$a <= $b より少ないか等しい $a が $b より少ないか等しい時にTRUE。
$a >= $b より多いか等しい $a が $b より多いか等しい時にTRUE。

どうやら文字列 数値の区別はないらしい

投稿者 muuming : 17:14 | コメント (0)

isset

isset -- 変数がセットされているかどうかを検査

int isset ( mixed var )
var が存在すればTRUE、 そうでなければFALSEを返します。

if (isset ( $var )){
処理
}

投稿者 muuming : 17:11 | コメント (0)

2005年11月01日

配列のキーが無い

$arr[] = $num."hoge";
$arr[] = $num1."hoge";
$arr[] = $num2."hoge";

配列のキーが無いんだけど・・・・
$arr[1] = $num."hoge";
$arr[2] = $num1."hoge";
$arr[3] = $num2."hoge";

と連番ではいるんだそうな

投稿者 muuming : 16:17 | コメント (0)

変数の変な代入 IFつき

$val .= ($val ? "\t" : "").$hoge;

つまり↓

if ( $val ne "" ){
$val = $val."\t".$hoge;
}else{
$val = $val.$hoge
}

----------------------------------------------------------------

$val = (($val ne "aaa") ? "\t" : "");

つまり↓

if ( $val ne "aaa" ){
$val = "\t";
}else{
$val = "";
}
-------------------------------------------------------------------

投稿者 muuming : 15:19 | コメント (0)