【PHP】質問スレッドpart27【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
05/03/03 22:41:23ID:???・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
過去スレ, 関連スレ等>>2-10辺り
0039nobadyさん
05/03/07 16:38:54ID:???保存は正常にすることができました。
保存したファイルを開くこともできました。
>>37
session_start()で取得した情報に基づきファイルをreadfile()で出力し、
それらを保存、及び開こうとしているのですが、
session_start()を使用した後にheader()を使用すると
保存ができて、開くことができません。
session()とheader()はなにか相性が悪いのでしょうか?
ご教授いただきたいです。
0040nobodyさん
05/03/07 16:46:42ID:???PHP関係無い
0042nobodyさん
05/03/07 17:39:59ID:???マニュアルのheader()の項を読む。
session_start()時にどんなパケットが流れるか見てみる。
対策は確かマニュアルにあったと思うし、メーリングリストに回答がある。
0043nobodyさん
05/03/07 23:17:18ID:PL7b7WJgPHPエディターを使ってWebサイトでの使用を目的としたPHPの勉強をしようとしているのですが、
文字コードについてよく判りません。
エディタでEUCを指定するとブラウザがISOの欧州フォントなどに切り替わり日本語部分が文字化けし、
Shift_JISで保存すると今度は自動的にEUCに変わり文字化けします。
動作確認をIE6.0とFirefox1.0で行っているのですがどちらも同様の反応が出ます。
PHPの保存時の文字とPHPをhtml内で表示させる場合のmeta内での文字コードなどはどのような関係になっているのでしょうか?
どなたか御教授お願いします。
0044nobodyさん
05/03/07 23:29:30ID:???0045nobodyさん
05/03/07 23:38:41ID:???PHPで文字エンコーディングを意識する必要があるのは3個所あって、
1. HTTP入力 - POST,GET等
2. 内部文字エンコーディング - スクリプト自体の文字エンコーディング
3. HTTP出力 - 結果の出力時の文字エンコーディング
詳しい内容は、ttp://www.php.net/manual/ja/ref.mbstring.php
その他に、apacheが付加するcharsetも関係してくる。AddDefaultCharset等。
0046nobodyさん
05/03/08 00:08:13ID:zgtI7JIE>>45
回答有難うございます。
示されたリンク先を見ましたが、ISO-8859-*, EUC-JP, UTF-8の何れかで記述して、
php.iniを書き換えれば良いということなのでしょうか?
0048nobodyさん
05/03/08 01:05:36ID:/emJr0GT以下の3行が書き込まれている test.txt
あいうえお
かきくけこ
さしすせそ
からデータを読み出す際は、$data = file("text.txt"); で読み出せたのですが、末尾の改行が邪魔です。
Perl でいうところの、
open(IN,"text.txt"); chomp(@data = <IN>); close(IN)
を実現しようとすれば、
$fp = fopen("test.txt","r");
while( ( $x = fgets($fp) ) ){
$data[] = chop($x);
}
とするしかないのでしょうか?
0049nobodyさん
05/03/08 01:09:06ID:???(エラーメッセージを画面に出さない)
0050nobodyさん
05/03/08 01:09:15ID:???見て読んで理解しろ。(貴方の既存の知識量等により)場合によっては
理解には別の情報が必要かもしれん。その場合はまたWebとか本から入手。
答えのひとつとして
「理解できなければ、全部'EUC-JP'に統一する」
を挙げておく。
0053nobodyさん
05/03/08 05:23:03ID:???submitで計算をさせるページを作っています。
cookie?などでこの$a〜$eを保存・読み込みをしたいのですが
(出来れば過去数回分を記憶してテキストフィールド以外の場所に表示させたい。)
php初心者で計算させるので精一杯で・・・
検索してもカウンターとかは見つかるんですがこういう手法がみつかりませんでした。
どのような記述で出来るのかご教授お願いします。
0054nobodyさん
05/03/08 06:37:29ID:???0056nobodyさん
05/03/08 07:55:52ID:???マニュアルには使い方の例も結構載ってるので悩むことは無いかと。
ttp://jp2.php.net/manual/ja/function.setcookie.php
005728
05/03/08 13:05:07ID:QMVO20O7返答遅くなってすいません。
そんな便利なコマンドがあったなんて・・有難う御座いますm(_ _)m
0058nobodyさん
05/03/09 01:11:34ID:???id,name
1,a born
MySQLに以上のデータが入っているとして、
$sql="select * from hoge where id=1";
$result=$db->query($sql);
$row=$result->fetchRow(DB_FETCHMODE_ASSOC);
でデータを呼び出すと、name列がaしか出てきません。
半角スペース以降も認識させる方法を教えてください。
必要な情報があれば出しますので!
006058
05/03/09 01:35:32ID:???×でデータを呼び出すと、name列がaしか出てきません。
○でデータを呼び出すと、name列が正しく出てきますが、フォームのtextエリアに入れるとaしか出てきません。
でした。ごめんなさい。よろしくお願いします。
0061nobodyさん
05/03/09 02:01:08ID:???<input type=text value=a born>
0062nobodyさん
05/03/09 02:24:45ID:???0063nobodyさん
05/03/09 02:32:54ID:???その通りでしあ
<input type=text size=50 name=\"name\" value=\"",$row["name"],"\">
ダブルクォーテーションで囲えば正しくフォーム部分にも出てきました。
でもこれで正解なんです?なんか野暮ったい気もするんですが
0065nobodyさん
05/03/09 10:29:04ID:???&を使用する事はできないのでしょうか?
<link>http://〜/a.php?abc=1&def=b</link>
0066nobodyさん
05/03/09 10:39:24ID:???& そのものを書くなら & と書かなければならない。
これは HTML でも同じ事
006865
05/03/09 10:42:13ID:???あ、そうですよね。失礼しました。
細工をするならリーダーの方で行うしかないのでしょうか?。
また、RSSで&を使用する事はモラル違反とはならないのでしょうか?。
006965
05/03/09 10:43:32ID:???どうにもならないのでしょうか。
007065
05/03/09 10:47:44ID:???ありがとうございますm(_)m
&が見えると先入観が^^;;
0071nobodyさん
05/03/09 12:44:45ID:???0072nobodyさん
05/03/09 12:48:45ID:???0075nobodyさん
05/03/09 13:18:58ID:???Perlの正規表現で有名なサイト(Perlメモ)にある正規表現を
preg_match で使用したところ、
Compilation failed: PCRE does not support \L, \l, \N, \P, \p, \U, \u, or \X at offset
と怒られてしまいました。
内容から察するに、preg_match でサポートしていない
正規表現だったためのエラーだと思うんですが、
どなたかPHPで動くものをご存知の方いらっしゃいますでしょうか?
文字コードはEUCを想定しています。
007775
05/03/09 17:36:34ID:???有難うございます。
\X を \x にしたところ、
Compilation failed: nothing to repeat at offset
という警告が出ました。
正規表現中のグループ化のカッコ(?: 〜 )
を外したところ、警告はなくなったのですが、
正常な文字でもひっかかるようになってしまいました。。
0078nobodyさん
05/03/10 10:51:45ID:BLVfW5EX今はstripslashesで¥を取り除いて処理しています。
ただサーバによっては文字化けしないので、stripslashesを使うと逆に文字化けするので、
stripslashesを使うのはちょっと怖いです。
これって正しいやり方なんでしょうか?ほかになにかいい方法があるのでしょうか?
よろしくお願いします。
008078
05/03/10 11:21:56ID:???有難うございます。ということは
function convert($str){
$result = htmlspecialchars($str);
if(get_magic_quotes_gpc()) {
$result = stripslashes($result);
}
return $result;
}
こんな感じでよろしいんですよね。
0081nobodyさん
05/03/10 16:07:59ID:???.newというバイナリが入っているんだけど、これは
何なんでしょうか。
0082nobadyさん
05/03/10 16:17:18ID:???<?php
$fp = fopen("log.dat", "a");
fseek($fp, 0);
flock($fp, LOCK_EX);
fwrite($fp, "xxxxx");
flock($fp, LOCK_UN);
fclose($fp);
?>
とやると、ファイルの最後に文字列が追記されていきます。
ファイルオープンモードを"a"で開いて、ファイルの最後ではなく、
最初に文字列を追記することはできますか?
0083nobodyさん
05/03/10 16:40:11ID:???バージョン管理用のゴミか差分じゃないかなぁ。
削除して問題ないですよ。
>>82
関数1つではできませんので、そういう処理をするロジックを書いてください。
0084nobodyさん
05/03/10 16:57:22ID:tcK+MKqwdbから一定時間経っても反応が無いとき(例えば5秒)、
タイムアウトさせる方法ってどうやるのでしょうか??
0085nobodyさん
05/03/10 17:12:06ID:krxtmGDVもとになるファイルの拡張子は
incでもhtmlでも何でもいいですよね?
この中で、この拡張子だと他のよりも読み込みが早い!
なんてのはないですか?
0086nobodyさん
05/03/10 17:37:08ID:???0087nobodyさん
05/03/10 17:47:38ID:???「ファイルネームによって読み込みの速度が違うのではないか?」
なんて、頭が固い私には全く思いつかなかった。
0088nobodyさん
05/03/10 18:44:56ID:???「a01」
というファイル名と
「a000000000000000000000000000000000000〜0000000000000000000000001」
というファイル名ではスクリプト全体としての速度は違うかもよ。
読み込み自体は変わらんと思うけど。
0090nobodyさん
05/03/10 19:15:55ID:???まさかそんな大事なことを無視してDBの使い方に終始してんじゃねーだろうな
0091nobodyさん
05/03/10 23:22:12ID:???を参考に XML-RPC を勉強してます。
例のように渡す値は 2 つだけ、と固定の場合は分かりましたが、
渡す値が可変の場合はどうしたらいいでしょうか?
例えば、果物の名前と個数を複数個渡す、という場合です。
0093nobodyさん
05/03/11 00:36:54ID:???ディレクトリエントリキャッシュあたりのような
偶然に左右される要素が影響してくるので、
キニスルナつーか気にしてもどうしようも無いって感じだろうね。
元質の話に戻ると、
拡張子は何でもいい、つーか拡張子が無くてもいい、
PHPの中の人はそのファイルに<?phpがあるかどうかだけ気にしている。
つー所でいいんでなかろうか?
0094nobodyさん
05/03/11 03:33:23ID:???ここを参考に機種依存文字を判定するFunctionを作っているのですが、
どうしても機種依存文字以外の文字も検出してしまいます。
$str = '文字列';
if (is_kisyu_sjis($str)) {
print "true";
} else {
print "false";
}
function is_kisyu_sjis($str) {
$ascii = '[\x00-\x7F]';
$sjis_twoBytes = '[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]';
$sjis_pattern='[\xA0-\xDF]|[\x87\xED\xEE\xFA-\xFC][\x40-\x7E\x80-\xFC]';
if (preg_match("/(($ascii|$sjis_twoBytes)*?)($sjis_pattern)/", $str)) {
return true;
}else {
return false;
}
}
正規表現がマズってますかね?
0095nobodyさん
05/03/11 22:42:09ID:???0096nobodyさん
05/03/11 23:43:35ID:???つか、正規表現はスレ違いかと
0097nobodyさん
05/03/12 00:44:49ID:???009894
05/03/12 16:03:01ID:???検索ですか・・
0099nobodyさん
05/03/12 23:00:23ID:???現スレまでに入って無いのって何か理由あったっけ?
とりあえず
正規表現道場@2ch Part4
http://pc5.2ch.net/test/read.cgi/php/1105930285/
0100nobodyさん
05/03/13 04:53:03ID:???PHP Version 4.3.10
EXPAT Version 1.95.6
XSLT support enabled
Sablotron Version 1.0.1
$data = xslt_process($xslt, $xml, $xsl, NULL);
上記からコンバートはできるのですが、書き出されたhtmlの
文字コードがutf-8になってくれません。
xslt_set_encoding($xslt, "UTF-8");
と指定すると、
Fatal error: Call to undefined function: xslt_set_encoding()
となりおかしいです。
PHP 4.3.10ではxslt_set_encoding()が使えると思うのですが。
0101nobodyさん
05/03/13 05:22:51ID:???Fatal error: Call to undefined function: xslt_set_encoding()
にならなかった。何が違うだろ。
0103nobodyさん
05/03/13 07:23:25ID:???|#ifdef HAVE_SABLOT_SET_ENCODING
|PHP_FE(xslt_set_encoding, NULL)
|#endif
みたいになってるし、マニュアルには
|Sablotronバックエンドを使用する際、このオプションは
|Sablotronにエンコーディングサポートを付けて
|コンパイルした場合のみ利用可能です。
とあるよ。xslt使ったこと無いから具体的にどうするのか知らないが。
0104nobodyさん
05/03/13 07:30:56ID:???こんなコメントも付いてた。
|The user has to explicitly compile sablotron with sablotron encoding functions
|in order for SablotSetEncoding to be enabled. config.m4 automatically checks for this...
0105nobodyさん
05/03/13 12:46:53ID:owz6Nafxincludeを利用して、メニューを埋め込むようにしたんですが、
階層が変わると、menu.php内に書かれたリンクが相対パスでは
上手くいかなくなるんですが、
絶対パス以外でなんか良い方法はありますか?
0106nobodyさん
05/03/13 13:08:42ID:IhUUdOoo・実際の動作を司っている「b.php」
という2つのファイルがあります。
b.phpはinclude("a.php");でa.phpの設定を受け継いでいます。
そのb.phpで出力された変数「$2ch」をa.phpで使うにはどうすればいいでしょうか。
0107nobodyさん
05/03/13 13:11:58ID:???0109nobodyさん
05/03/13 13:32:40ID:j3cG5KiD0111106
05/03/13 13:51:11ID:???変に例を作ったのが墓穴を掘りました。実際には文字から始めてます。
>>108
すいません忘れてください。
変数に変数を代入することは可能でしょうか?
例)
<form>
-略-
<input type=text name=yyyyy value=>
</form>
$zzzz = "<a href=$yyyyy>";
というように。
0112105
05/03/13 14:02:04ID:4ktgufgkmenu.phpにサイトマップやヘルプなどへのリンクを張って
includeを使用して、全ファイルで共有したいのですが、
サイトマップなどへのリンクを相対パスで記述した場合、
フォルダの階層が変わると、上手くいきません。
menu.phpのincludeは
<?include($_SERVER['DOCUMENT_ROOT'] . 'menu.php') ?>
を使用して、階層が変わっても対処できたんですが、
同じような感じでmenu.php内のリンクに対しても対処方法はないでしょうか?
0113nobodyさん
05/03/13 14:13:13ID:???・htmlでbase要素を用いる
・メニュー内のリンクを/からのパスにする
・menu.phpに相対パスを計算させる
0114105
05/03/13 14:29:21ID:4ktgufgkmenu.phpに相対パスを計算させる
とはどういう事ですか?
0119100
05/03/13 19:14:17ID:???どうやって指定するのでしょうか。
--with-xslt-sablot以外になさそうなのですが。
./configureの中身は読んでみましたがさっぱりでした。
0120nobodyさん
05/03/13 21:02:24ID:???読むのならむしろ libsablotron の configure とか /usr/include/sablot.h かと。
0121nobodyさん
05/03/13 21:15:58ID:???だからexpatはともかく、sablotは使っとらんので知らんがな。
>--with-xslt-sablot以外になさそう
それはPHPのconfigureオプションであって、PHPで該当するオプションは
sablotの設定を見て自動で設定するからいらない。
コメントで書いてあるのは、それ故「必要ならsablotの設定をちゃんとしろ」ってこと。
0122100
05/03/14 03:18:42ID:???ないみたいです。
gingerall にいったら、新しい1.0.2が出てたのでそれをインスコ中
0123100
05/03/14 05:32:21ID:???http://bugs.php.net/bug.php?id=21427
これを参考にしたんですけど。
●Sablot-1.0.2
$ ./configure --with-expat=/usr/local --with-iconv=/usr/local
●php-4.3.10
./configure --with-apxs2=/usr/local/apache2/bin/apxs \
--enable-mbstring \
--enable-mbstr-enc-trans \
--enable-mbregex \
--enable-zend-multibyte \
--with-zlib \
--with-mysql=/usr/local/mysql \
--with-zlib-dir=/usr/lib \
--with-gd \
--with-jpeg-dir=/usr/local \
--with-png-dir=/usr/local \
--with-xml \
--with-dom=/usr/local \
--enable-xslt \
--with-xslt-sablot=/usr/local \
--with-iconv-dir=/usr/local \
--with-expat-dir=/usr/local
expatとiconvのインストールディレクトリ合わせてるんですけど
だめなんですよ。
0124nobodyさん
05/03/15 02:58:15ID:hZ3yLB9y携帯で着メロのダウンロードサイトを作成しているのですが、
開発環境のWindows版ではうまく動作するのですが、
本番環境のLinux版ではダウンロードしようとするとで502エラーを返してきます
fopen(ファイル)
fput(ファイルの中身吐き出し)
fclose
って方法で接続端末に着メロを出力しているのですが、
なぜかうまくいきません。
502エラーってことはApacheの設定が悪いのでしょうか?
そして、対処法はどのようにすればよろしいでしょうか?
0127nobodyさん
05/03/15 21:24:22ID:???0128nobodyさん
05/03/16 22:49:46ID:???00分になりアクセスがあったらファイルを出力し次の00分になるまで出力はなし。見たいな考え方でいいですか?
この考え方だと一回もアクセスがないと出力されないことになりますが、何か便利な関数があるんですか?
0129nobodyさん
05/03/16 23:10:09ID:???これが使えないようなら、データ投入時や表示時になんとかするしかない。
表示時(アクセス時)に必要なデータをかき集められるものなら、表示時に時間をチェックして誤魔化す。
データ投入時にあらかじめページを作成しておいて、表示時の時間チェックと組み合わせるのもありだな。
実行環境ややりたい事が分からんことには、可能か不可能かさえも分からんよ。
0130nobodyさん
05/03/16 23:49:33ID:???背景が透過gifな画像をリサイズした場合に透過ではなくなるのですが、
これを透過のままリサイズ出来ないのでしょうか?。
出来るのであれば参考になるサイトまたは方法を教えてください。
0131nobodyさん
05/03/17 10:53:09ID:???基本は、>>129が言うように、OSの自動処理を使う。
連鯖などでcrontabが使えない場合、いかにしてトリガを引くか、それを考える。
・WEBアクセスの際に前回処理時間と比較しトリガ発生→アクセス無ければ無意味
・自宅のPCのタスクスケージュラや、DiCE等で定期的にトリガプログラムへアクセス →PC付けっぱなし必須
・携帯電話などで自分でトリガプログラムに定期的にアクセス → 鬱陶しい、眠れない、パケ代かさむ
さぁ、どれにする?
0132128
05/03/17 11:48:17ID:???リナックスのことワカメだから本買ってしらべてみます
0134nobodyさん
05/03/17 17:42:24ID:???こんな感じ。フルカラーじゃないから汚いけど。
$src_info = getimagesize ($src_path);
$src_image = imagecreatefromgif ($src_path);
$dst_image = imagecreate ($dst_width, $dst_height);
$trans = imagecolortransparent ($src_image);
if ($trans) {
imagepalettecopy ($dst_image, $src_image);
imagefill ($dst_image, 0, 0, $trans);
imagecolortransparent ($dst_image, $trans);
}
imagecopyresized ($dst_image, $src_image, 0, 0, 0, 0, $dst_width, $dst_height, $src_info[0], $src_info[1]);
imagegif ($dst_image, $dst_path);
0135128
05/03/17 18:11:56ID:???使ってるサーバーがカゴヤなんだけど
cron設定はノーサポートでおしえてくれないや
自分なりに考えてみたんだけど
カゴヤ管理画面のCRON設定 で
*/1 * * * * /home/カゴヤアカウント/public_html/count.php
のみ入力してみたんだけどでなにがちがうんですかね?
/bin/sh: /home/カゴヤアカウント/public_html/count.php: cannot execute binary file
ってなのがメールで送られてくるんだけど
エロイ人教えてください
0136nobodyさん
05/03/17 18:24:21ID:???エロくはないけど、
たぶん、
*/1 * * * * php /home/カゴヤアカウント/public_html/count.php
だろうね。
それでもエラーが出るようなら、phpのパスを調べれ。・
0137128
05/03/17 18:41:56ID:???/bin/sh: php: command not found
のエラーのメールがきますわ
count.phpのパーミッソンハ705
中身は
<?/* シンプルカウンタ by ToR tp://php.s3.to 2000/10/18 */
$fp = @fopen("count.txt","r+") or die("ファイルが開けません");
$count = fgets($fp, 64);
$count++;
rewind($fp);//set_file_buffer($fp, 0);
flock($fp, LOCK_EX);
fputs($fp, $count);
fclose($fp);echo $count;?>
何がちがうんですかね?
0138nobodyさん
05/03/17 18:45:35ID:???>>136 wrote
> それでもエラーが出るようなら、phpのパスを調べれ
環境変数、特にコマンドの検索場所を指すPATHが違う。
■ このスレッドは過去ログ倉庫に格納されています