10/06/20 18:02:31 7fNS8+df
>>581
それやるとFirefoxでも問答無用で保存ダイアログが表示される。
やりたいのは>>580でも書いていますが保存ダイアログを出したいのではなくて
ブラウザ上で表示したい。
583:nobodyさん
10/06/20 18:04:12
>>582
保存するなら >Content-Disposition: attachment
表示するなら >Content-Disposition: inline
584:nobodyさん
10/06/20 18:04:41
>>579
失礼しました。
【OS名】CentOS5
【PHPのバージョン】5.3
【連携ソフトウェア】
【質問内容】
formから放り込んだ日本語をImageTTFTextで縦書きにしたいのですが、句読点やーがおかしな事になります。
正しく表示する方法はないのでしょうか?
過去ログでは縦書き専用フォントで・・・とかが見つかったのですが肝心の縦書き専用フォントがぐぐっても見つけられません。
585:nobodyさん
10/06/20 18:22:53 7fNS8+df
>>581
すみませんでした。
inlineの部分を見落としていました。
IEだとbmpファイルはこの方法でも保存ダイアログが出てしまいます。
また空テキストファイルだとFirefoxだと保存ダイアログがでます。
IEでは空テキストファイルでは保存ダイアログはでません。
これらを解決する方法は無いでしょうか?
586:nobodyさん
10/06/20 18:27:15 7fNS8+df
追加
空テキストファイルのMIMEを見ると
application/x-empty
となっています。
application/x-emptyを調べてみてもいまいちどういうときにできるMIMEなのかわかりません。
application/x-emptyをtext/plain変換してやらないと駄目って事ですかね?
587:nobodyさん
10/06/20 19:43:42
たとえばapplication/zipをinlineで送られてもブラウザはどうしようもないだろ
mime-typeを適切に設定しろ
それだけだ
588:nobodyさん
10/06/20 19:49:09 7fNS8+df
>>587
??????
589:nobodyさん
10/06/20 20:02:32
>>584
ID出すことを忘れているようだけど、ともあれ、本題についてだけど、それは難しい。
フォントをいじってみてはどうか。
590:nobodyさん
10/06/20 23:22:44 V/OxbjwX
filesize()は使わない方が良い。
他でオープンされていると0になるし、
値がキャッシュされるから実サイズと異なる値を返すことあり。頻繁な更新されている物だと。
591:nobodyさん
10/06/21 00:35:22
>>584
ImageTTFTextって使ったことないけど
表示する文字が句読点かどうか調べて
句読点ならは座標をずらせばいいんじゃない?
ハイフンだったら縦棒(|など)に変換するとか。
592:nobodyさん
10/06/21 00:59:52 oQjyj8CX
複数階層のmkdir_rなんですが。これだと日本語パスで失敗します。
\を含むため。どう直せばいいですか。
function mkdir_r( $path ) {
if(is_dir($path)) return;
$path = str_replace( '\\', '/', $path);
$parts = array_filter ( explode('/', $path), 'strlen' );
$s=""; foreach ($parts as $part) { $s.="$part/"; @mkdir($s); } }
593:592
10/06/21 01:12:43 oQjyj8CX
自己解決しました
594:592
10/06/21 01:34:09 oQjyj8CX
これね。
function mkdir_r( $t ) {
$s=array();
while( !is_dir($t) ) { $s[] = $t; $t=dirname($t); }
for( $n=count($s)-1; $n>=0; $n-- ) mkdir($s[$n]); }
595:nobodyさん
10/06/21 01:43:11
>>594
そんな関数作らんでもmkdirにrecursiveオプションがあるんだからそれ使えばいいのに
596:nobodyさん
10/06/21 12:33:30 oQjyj8CX
PHP4 PHP5に依存しないことが大事。
597:nobodyさん
10/06/21 12:51:52
PHP4でのサンプル、mkdirのマニュアルページに載ってるけど、
pathinfoとかdirnameの日本語の不具合って直ってないよね?
URLリンク(bugs.php.net)
598:nobodyさん
10/06/21 18:06:11 oQjyj8CX
デストラクタの時に値が保存されないんですが。どうすれば値が保存されますか。
<?php
$a = new A();
$a->add();
$a->add();
class A {
var $num;
function A() { $this->num=0; register_shutdown_function( array( $this, '_A' ) ); }
function add() { $this->num++; }
function _A() { echo "num={$this->num} \n"; }
}
?>
599:nobodyさん
10/06/21 18:16:36
>>591
「~」の処理とか
> 座標をずらせばいいんじゃない?
これとか、多分素直にさせてくれないよ。
動くとわりと面白い系だから一度は試して遊ぶといいかも。
600:nobodyさん
10/06/21 18:32:23
>>598
保存って具体的にどうしたいの?
601:nobodyさん
10/06/21 18:35:41 oQjyj8CX
num=2 が出力したいんですが。
602:nobodyさん
10/06/21 18:41:50
そのままコピペしてhoge.phpというファイルに
セーブして実行してみた。
% php hoge.php
num=2
出るじゃん。
603:nobodyさん
10/06/21 18:42:55 oQjyj8CX
PHP4.2程度できる方法ありますか。
604:nobodyさん
10/06/21 18:46:36
4系だと出来んな。
グローバルに渡すしか。
605:nobodyさん
10/06/21 18:47:44 oQjyj8CX
外部変数にしたら出来るんですが。
これだとクラス変数と別に変数用意する手間が掛かって良くないです。
クラスの値が破壊、初期化されてからregister_shutdown_functionが起動すると思います。
回避する方法ないですか。PHP4です。
$Anum=0;
$a = new A();
$a->add();
$a->add();
class A {
function A() { global $Anum; $Anum=0;
register_shutdown_function( array( $this, '_A' ) ); }
function add() { global $Anum; $Anum++; }
function _A() { global $Anum; echo "num={$Anum} \n"; }
}
606:nobodyさん
10/06/21 19:00:35 oQjyj8CX
グローバル変数とクラスAをまとめたクラス作ったら成功しました。これで生き残る。
<?php
$b = new B();
$b->add();
$b->add();
class B {
var $Anum=0;
var $a;
function B() { $this->a = new A(); }
function add() { $this->a->add(); } }
class A {
function A() { global $Anum; $Anum=0;
register_shutdown_function( array( $this, '_A' ) ); }
function add() { global $Anum; $Anum++; }
function _A() { global $Anum; echo "num={$Anum} \n"; } }
?>
607:nobodyさん
10/06/21 19:09:33
PHP4系はオブジェクト指向まわりとかいろいろ
調子悪いので茨の道だぞ。
608:nobodyさん
10/06/21 19:14:46
classBの $Anumと
classAの $Anum 別物じゃん。
結局BがAのインスタンスもってるだけで >>605と同じ・・・
609:nobodyさん
10/06/21 19:16:50
PHP4環境ないから知らんけど
$a =& new A();
とかでしょどうせ。
610:nobodyさん
10/06/21 19:27:13 oQjyj8CX
&付きでうまくいきました。有り無しの違いが分からない
<?php
$a = & new A(); $a->add();
$b = & new A(); $b->add(); $b->add();
class A {
var $num;
function A() { $this->num=0; register_shutdown_function( array( &$this, '_A' ) ); }
function add() { $this->num++; }
function _A() { echo "num={$this->num} \n"; } }
?>
611:nobodyさん
10/06/21 19:29:54
&入れないとnew直後に別インスタンスにコピーされてしまう変態仕様だから。
PHP4 new演算子
とかでググれば出てくる。
612:nobodyさん
10/06/21 19:30:42 oQjyj8CX
サンクス
613:nobodyさん
10/06/21 19:34:20
PHP4はオブジェクトも値渡しだからな、よくはまる罠だった
>>598
>>609 + register_shutdown_function(array(&$this, '_A' ))
614:nobodyさん
10/06/21 22:56:57
習い始めたときは既にPHP5の時代だった俺は運が良かったのか
615:nobodyさん
10/06/21 23:23:53 oQjyj8CX
CURLのFTPアップロードで、
複数ファイルを持続接続でアップする方法ありますか。
毎回ログインする方法しか分かりません。
616:nobodyさん
10/06/21 23:39:00
>>615
URLリンク(jp.php.net)
これが参考になるかな
617:nobodyさん
10/06/21 23:46:41 oQjyj8CX
複数スレッドで動かせば、帯域を無駄なく使えて良いんですが。
PHP4だと>>616が使えないです。
FTPのログイン動作に3から10秒ほどかかるのでこの時間の転送量は0です。
ログイン省く方法無いですか。
618:nobodyさん
10/06/21 23:58:15
なんでPHP5にする選択はしないの?鯖代なんて月数百円だろ。
619:nobodyさん
10/06/22 02:55:15
よく分かんないけどFTPってそのまましゃべれないの?
620:nobodyさん
10/06/22 03:50:07
二人としゃべらないといけないからちょっと面倒
621:nobodyさん
10/06/22 09:02:05
さっさとせめてPHP5に乗り換えたほうがいいと思うけどね。
(そもそもPHP捨てたほうがいいというのは置いといてw)
622:nobodyさん
10/06/22 09:11:04
PHPはC++のスクリプト版+追加機能のようなものでもっとも有望なスクリプト言語。
PHPからC++のコード生成出来たり、実行ファイルが作れればいいのだが。
追加機能は例えば、static_php.libを組み込むことで実現出来たり。
623:nobodyさん
10/06/22 09:13:48
C++に翻訳するやつはここにあるんだけど。Windowsでは動かないらしい。だれか改良して対応してクリ。
HipHopはCentOSとFedora向けに開発されており、他のオペレーティングシステム上でのビルドは現在のところ機能しません。
HipHop for PHP
URLリンク(blog.candycane.jp)
624:nobodyさん
10/06/22 10:21:03
改良して対応してくれって言うけど、その分の人件費はどうなるの?
なんでもWebだったらタダでやってくれると思ってないか?
625:nobodyさん
10/06/22 10:41:41
Friendクラスも使えないしPHPダメでしょ。
まぁ使うけど。
5.3で静的遅延束縛が実装されて大分使いやすくなった。
626:nobodyさん
10/06/22 12:37:56
C++のfriendキーワードの事か?
今頃取り入れたらそれこそPHPらしいって言われるな