トップページ⇒php
1001コメント280KB

【PHP】質問スレッドpart20【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/08/06 15:44ID:paJ4kjjQ
・PHP全般の質問スレです。
・新規質問の方は上げてください。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-4


抜けているものがあったら補足願います
0140nobodyさん04/08/10 02:50ID:???
あっ break;取り忘れた 
014113404/08/10 02:56ID:???
>>139
誤字までコピペしなくても・・・
fomって何だよw

・・・あ、俺だ

>>138
専門外って何だよ
ってか、ifを知っていて何でこの処理がわからないんだ??
014213304/08/10 03:22ID:???
>>139
そうそう!最初はそのようにif〜文で記述するんだと思ってた訳です。
確かに134氏の記述はシンプルで良いと思いましたが。
実はMySQL+PHPの入門書はスペンサー・K・OGAWA著の本を持っています。
それにも欲しいサンプルが無かくてそのままにしていたので、
これを機に読み返してみようと思います。

>>134=141
自分はプログラマーでは無い、という意味の専門外という意味です。
コードがシンプルで分かりやすいので、アナタの提案してくれた
caseを使った記述を参考にやってみようと思います。

色々ありがとうございました。
スレ汚し失礼しました。
0143nobodyさん04/08/10 03:33ID:???
>>138
Perlで自分の使いたいようなサンプルがあるなら、
それみて(パクって)コーディングした方が早いよ。

caseのデフォルトで何も値が取れなかったときに
$sql="1=1"とでもしとくのが吉。まあwhere条件外すのが正解だけど。
それよかその場合は検索を弾くのが正解かな。仕様がわからんけど
0144軟式PHP04/08/10 09:09ID:???
おはよう眠いデス。
0145nobodyさん04/08/10 09:13ID:???
おはようす
0146nobodyさん04/08/10 11:07ID:???
フォームで入力された文字列の大文字部分を全て小文字に置換したいんですが、今は

$data = ereg_replace("A", "a", $data);
$data = ereg_replace("B", "b", $data);
↓
$data = ereg_replace("Z", "z", $data);

という(アナログ的な?)方法を使っています。

もっと短くて済む表現はないでしょうか。
本や過去ログ見たり検索しても全然見つからなくて・・・。

初心者な質問ですみません。
0147nobodyさん04/08/10 11:11ID:???
$data = ereg_replace("[A-Z]", "[a-z]", $data);
0148nobodyさん04/08/10 11:36ID:???
>>146ワロタ
>>147の冷静な対応にもワロタ

今日はいい天気ですね^−^
0149nobodyさん04/08/10 11:40ID:???
>>146
本当に検索したのか疑問だけど。

$data = strtolower($data);

ttp://jp.php.net/manual/ja/function.strtolower.php
0150nobodyさん04/08/10 12:08ID:5BcnoGGN
GD2ってgifに対応してないんですよね?
動的にグラフをつくりたいのですが、なんとかgifを生成できないものですか?
015114604/08/10 12:26ID:???
回答ありです。

>>147
それやったんですが
$data = 'ABC';
とやると
[a-z][a-z][a-z]と返ってきてたんですよ。

>>149
てっきりereg_replaceだと思い込んでました。
ググっても正規表現関係しか出てこなかったんだけど何かいい検索法とかあるんでしょか。
0152軟式PHP04/08/10 12:46ID:???
ググるのもいいけど、とりあえずマニュアル見よう。
0153nobodyさん04/08/10 12:48ID:???
ググってだめならヤフーは?
0154軟式PHP04/08/10 12:55ID:???
色々と流出する。
0155軟式PHP04/08/10 13:09ID:???
>>150
imagegif使えばいいんじゃないの?
0156nobodyさん04/08/10 13:16ID:???
>>146
文字列の操作についてなにか調べたかったら、
文字列関数をチェック
http://jp.php.net/manual/ja/ref.strings.php

その他、ここからそれっぽいところを探す。
http://jp.php.net/manual/ja/funcref.php

確かにちょっと慣れるまでマニュアルの有効利用ってできないのかも。
0157nobodyさん04/08/10 13:18ID:???
>>150
ライセンス切れたから、そろそろimagegifが使えるようになるかも。
もう使える??

ライセンスの問題でgifは使えなくなったんだ。
0158nobodyさん04/08/10 13:38ID:???
最新版ではgifの書き込みもサポートされてる
0159軟式PHP04/08/10 13:40ID:???
1.6ぐらいから使えなくなったってどっかに書いてあったなぁ。
2.0から普通に使えるようになったんじゃないの?
0160nobodyさん04/08/10 13:58ID:???
gd 2.0.28からGIFサポート復活
0161nobodyさん04/08/10 14:01ID:???
4.3.8PHP付属のGDはまだ未対応のバージョンみたいだね。
4.3.7 で 2.0.23 になったばかりみたいだから。
次のバージョンぐらい?
http://www.php.net/ChangeLog-4.php
0162nobodyさん04/08/10 14:02ID:???
pngあるんだからいまさらgifを使うメリットないからな。
gifにICCプロフィールが埋め込み出来るってのなら別だけど。
0163軟式PHP04/08/10 14:10ID:???
透過もPNGは出来るしなぁ。GIFって広まってから
「よっしゃ、広まったところで金取るかーー」っていうのが丸見えで萎え。
0164nobodyさん04/08/10 14:18ID:???
あの時期にgif使ってたけど全部jpgに変えて今でもgifって使わないようになったよな。
pngも24にすれば屁たれIEでもなんとか透過できるし。
0165nobodyさん04/08/10 15:51ID:???
携帯電話って GIF じゃないとダメなやつってあったっけ?
016614604/08/10 16:29ID:???
>>156
どもども。
検索じゃなくて目次から探すんですね。
なかなか難しそうだけどがんばってみますv

亀レスすまそ。
0167nobodyさん04/08/10 19:29ID:???
>>166
chm版なら全文検索があるからそれが使える
0168nobodyさん04/08/10 19:32ID:???
コナミ減収オメ
0169nobodyさん04/08/10 19:45ID:???
>>165
あったよ
http://www.nttdocomo.co.jp/p_s/imode/tag/s3.html#3_6
0170nobodyさん04/08/10 20:19ID:???
ドコモがPNG対応してくれれば、俺も完全にPNGに移行するんだがなぁ。
対応する気がないみたいだから、まぁ当分はgifかな・・・。
つうか、何故ドコモはPNGに対応しないんだべ。技術不足?
0171nobodyさん04/08/10 20:27ID:???
>>165>>169
imodeの昔の端末はGIFでないとダメ
逆にJ-skyの昔の端末はPNGのみ

仕方が無いのでJPEGで吐き出してる
これも一部端末で見られないけど、
最近のはカメラ対応の関係で見られたりするんで
01726804/08/10 20:55ID:???
>>126
やっとできましたよ。
fgets($fp)のところをfgets($fp,4096)にしてできました。

どうもすみませんでした。
0173nobodyさん04/08/10 21:40ID:???
>>172
根本的な対策になっていないような気がするぞ。おい。
0174nobodyさん04/08/10 21:43ID:???
fgets使わなくても他の関数でいけるような
0175nobodyさん04/08/10 22:41ID:???
phpはじめたいんだけど、一から教えてくれる人いませんかー
全然わかりません。

ゲームの攻略サイト作りたいんだけど、php必要ない?
どこにphpを使ったらいいのかわからんのよ
0176nobodyさん04/08/10 22:43ID:???
>>175
ない
0177nobodyさん04/08/10 22:48ID:???
>>176
使うとすればどこに使う?ちみなら
0178nobodyさん04/08/10 22:52ID:???
>>175
まぁゆっくりマンモス本でも眺めてみたらどうだろうか
http://www.sra.co.jp/people/t-ishii/php_new/php4_new.html
0179nobodyさん04/08/10 22:56ID:???
>>175
ヘッダーとかフッターとか、同じリンクボタンで複数のページに登場するときとか
phpでやると楽ですよ。
metaも全部のページに書かないでもいいので楽。
0180nobodyさん04/08/10 23:01ID:???
>>179
それがあたりまえになるともっと楽したくなるさ
018113104/08/11 00:04ID:???
>>172
・・・俺の予想があたっとるやんけw
0182nobodyさん04/08/11 00:27ID:???
やんけ
0183nobodyさん04/08/11 00:41ID:2sgdWAV8
DOM勉強してるんですが、
ファイルに出力するときって何を使えばいいのでしょうか?
普通に一つずつテキストとして出力するんじゃ駄目ですよね。

どうもDOM関係の資料が少なくて困ってます。
ヒントでもいいので教えてください。
0184nobodyさん04/08/11 00:45ID:???
>>183
結構詳しい資料を発見した。
http://broadband.ocn.ne.jp/gmms/dom.html
0185nobodyさん04/08/11 03:29ID:???
>>184
わかりやすい図入りでよくわかりました。
018616504/08/11 11:36ID:???
>169-171 どもです。
GIF でないと表示できない端末があるっつーことは、GD の GIF 対応も
うれしいかな。端末によって表示できないのは可哀想だし。
0187nobodyさん04/08/11 11:51ID:???
質問です。
require_onceで他サーバにあるライブラリ等を読込事は出来ないのでしょうか?
ini_set('include_path','http://******')
で変更しても上手く出来ないです。
ご教授下さいます様お願い致します。
0188nobodyさん04/08/11 11:55ID:???
>>187
できるのかどうかは知らんが、できたら恐ろしい。
0189nobodyさん04/08/11 11:57ID:???
夏だ、夏過ぎる。
0190nobodyさん04/08/11 12:02ID:???
>>188
そうですよね…セキュリティの問題等もあるでしょうから、
出来なくて当然なのですよね。
有難う御座いました。
0191nobodyさん04/08/11 12:04ID:m7sM3Cg8
>>187
実行形式である限り結果しか読み込めない
読み込めたら面白いが問題山積み

今日は更に暑くなりそうだね
0192nobodyさん04/08/11 12:05ID:???
phpsとかなら読み込めるけどね
0193nobodyさん04/08/11 12:34ID:???
いやできるだろ。
ライブラリを置いている鯖がtext/plainとして吐いてくれればの話だが。
019419304/08/11 12:35ID:???
あ、text/plainつうより、ソーススプリクトをそのまま吐いてくれればってことね。
0195軟式PHP04/08/11 12:54ID:???
(つω;)
0196nobodyさん04/08/11 13:03ID:???
>>187
SOAP や XML-RPC を検討したら。
0197nobodyさん04/08/11 13:53ID:???
php.ini の設定次第で
include ('http://example.com/lib.php');
は出来るワケだが。

require_once は知らない。
あと出来ない方がいいってのも事実。safe_mode で運用しような。
0198nobodyさん04/08/11 14:00ID:???
できるわけないじゃん
019918704/08/11 14:25ID:???
親切に皆さん有難う御座います。
行いたかったのはエラーの関数等を読み込んで
結果を別のPHPで行いたかったのです。
しかしそれが出来たら怖いですよね…
勉強が足りないです。ありがとう御座いました。
0200軟式PHP04/08/11 14:52ID:???
共通関数作ってライブラリ化してそれを読み込むってんなら常套手段だが
他サーバーってのがよく分からんのだが。
0201nobodyさん04/08/11 14:54ID:???
たぶん、エラー処理用のスクリプトがあって、それをrequireしたかったと
言ってるのだろうから、素直にコピーしたら良いのでは?
0202軟式PHP04/08/11 14:57ID:???
そだよね。なんで他サーバー・・・?(´・ω・`)
0203nobodyさん04/08/11 14:59ID:???
インターネットと仮定しているからあれだけどLAN等で複数のサーバーが
あった場合なら出来そうな気がするのですが、それは先読みし過ぎだろうか^^;
LANで接続されている環境であれば共有したい事もあるだろうしね
0204nobodyさん04/08/11 15:02ID:zEQw5zg8
PEARのMail_mimeDecodeをつかって、メールから本文と添付ファイル(画像)を
引き出してます。
が、あぽーのメーラーは、メールに画像を添付した場合、multipartのひとつ
のpartがmultipartになってます。
multipartのネスティング状態です。
その中に、プレビュー用のパートと画像本体のパートに別れているようです。

$decode1 = new Mail_mimeDecode( メール全体 );
でPart1/Part2/Part3とデコードできるのですが、
Part3がmultipartだったばあい、どうやってでこーどすればいいのでしょう?
$decode3 = new Mail_mimeDecode( Part3のbody );
とやっても、mime decodeしてくれません。

よろしくおながいします。
0205軟式PHP04/08/11 15:03ID:???
NASのようにしたいのだろうか。
0206nobodyさん04/08/11 15:12ID:???
>>203
その場合だってHTTP使わんでもいいと思うんだけど・・・NFSとかさ
0207nobodyさん04/08/11 17:28ID:???
Googleの検索文字の分割みたいなのをやりたいのです。
と、いっても全文検索みたいな高度なものではないです。

ひとまず実現したいのは・・・
1. スペース区切りの場合はスペースで単語を分割
2. ダブルクォーテーションでくくられている場合は、その間のスペースは文字扱い

1だけなら explode() を使えばいいんですが、
2も実現するためにはどうしたらいいでしょうか?

例)
あああ いいい ううう
→ "あああ" と "いいい" と "ううう" に分割

あああ "いいい ううう" えええ
→ "あああ" と "いいい ううう" と "えええ" に分割

スペースもダブルクォーテーション括りも複数可で。

0208nobodyさん04/08/11 17:31ID:???
まず、""で分割して、次にスペースで分割すれば
0209nobodyさん04/08/11 17:39ID:Ad++av00
PHP初心者で、分からない事があるので質問させてください。
よろしくお願いします。

$fp = fopen("xx.txt","a+");
fputs($fp,"あああああ");
でテキストファイルに何か文字列を書き込む場合、モードが
a+になってるのでファイルが無かったら自動で作成するはずですよね?

事実、ローカルで試したら作成してくれたのですが、Web上で試そうと
思ってPHPが実行できる無料スペースにUPしたところ、エラーが出て書き込め
ませんでした。

テキストファイルを先に自分で用意しておくと書き込みが成功しました。
なぜ、ローカルではうまくいってWeb上ではうまくいかないのでしょうか?
サーバーの仕様とか、そういう問題なのでしょうか?

こんな質問で申し訳ありませんが分からないので教えてください。
0210nobodyさん04/08/11 17:42ID:???
>>209
エラー内容を書く!

多分 パーミッション だと思うけど。
0211nobodyさん04/08/11 17:44ID:J4D7ZMSz
GDを使ってサムネイルを作った時に
jpegにICCプロファイルの埋め込みって出来ないもんですかね。
webで見ると全然色が違うので。
分かる人居ませんか。
0212nobodyさん04/08/11 17:45ID:???
PHP初心者とあそぼう
0213nobodyさん04/08/11 17:47ID:???
>>208
ありがとうございます。

例)
あああ "いいい えええ ししし" ううう えええ "search text"

Array
(
[0] => あああ
[1] => いいい えええ ししし
[2] => ううう えええ
[3] => search text
)

なかなかいい感じなんですが、
最初に ダブルクォート で explode() しちゃうと、
[1] と [2] の区別がつかなくなっちゃいますね・・・。
0214nobodyさん04/08/11 18:13ID:???
うんこソースどぞー


$str = 'あああ "いいい えええ ししし" ううう えええ "search text"';

$str2 = explode(" ",$str);
$count = count($str2);

unset($str);
$flag = 0;
$j = 0;
for ($i=0; $i<$count; $i++) {
if( mb_ereg("(^\")",$str2[$i]) ){
$flag = 1;
$str[$j] = $str2[$i];
}
else if ( $flag==1 && !mb_ereg("(\"$)",$str2[$i]) ) $str[$j].=" ".$str2[$i];
else if ( $flag==1 && mb_ereg("(\"$)",$str2[$i]) ) {
$str[$j].=" ".$str2[$i];
$j++;
$flag=0;
}
else {
$str[$j] = $str2[$i];
$j++;
}
}

foreach($str as $key => $value) echo "\$str[".$key."] = ".$value."<br>";
0215nobodyさん04/08/11 18:28ID:???
ウンコー
__$1__ がとてもいけてない。


$text = 'あああ "いいい えええ ししし" ううう えええ "search text"';

$text = preg_replace("/\"([^\"]+)\"/", "\"__$1__\"", $text);
$quote = explode("\"", $text);

$list = array();
foreach ($quote as $item) {
if (preg_match("/^__(.+)__$/", $item, $arr) != 0) {
$list = array_merge($list, $arr[1]);
} else {
$list = array_merge($list, explode(" ", $item));
}
}

for ($i = 0 ; $i < count($list) ; $i++) {
$list[$i] = trim($list[$i]);
if (strlen($list[$i]) == 0) {
array_splice($list, $i, 1);
}
}

print_r($list);
0216nobodyさん04/08/11 21:17ID:???
リモートファイルの最終更新日を拾得するには
allow_url_fopenを有効にするしかないのでしょうか?
0217>>21304/08/11 22:18ID:???
$str = 'aaa "iii eee i\"iii\"kkk" uuu o\"oo "search text"';
$words = array();
if( preg_match_all('/("[^"]*(?:\\"[^"]*)*?"|\S+)(?:\s|$)/',$str,$m) ) {
 if( is_array($m[1]) ) {
  foreach($m[1] as $tmp) {
   $tmp = preg_replace('/^"(.*)"$/','$1',$tmp);
   $tmp = preg_replace('/\\\\"/','"',$tmp);
   array_push($words,$tmp);
  }
 }
}
print_r($words);

バグ入ってないかな・・・確認求む
入れ子のケースは簡単そうでとても難しい
文字の出てくる順序を気にして考えるとよいよ
0218nobodyさん04/08/11 23:33ID:UR02D5bF
変数名$fileが20**00のときにこの条件を実行したいのですが、
これだとうまくいきません。

if($file == 20..00)

どのように変更したら良いのでしょうか?
0219nobodyさん04/08/11 23:50ID:???
性器表現
0220nobodyさん04/08/12 00:34ID:???
"U" 性器表現むずい
0221nobodyさん04/08/12 00:36ID:???
if(ereg("20[0-9]{2}00",$file)){echo "U";}
0222nobodyさん04/08/12 00:53ID:???
>>211
俺はImageMagickに逃げた。
0223nobodyさん04/08/12 01:07ID:???
functionの中でfunction以外のところで定義した変数は使えないんでしょうか?
0224nobodyさん04/08/12 01:18ID:???
使わない方が身のためです
0225nobodyさん04/08/12 01:48ID:???
>>222
どもー
ImageMagickはICCが埋め込みできるんですか?
ってググってみますー
ありがとねん!
0226nobodyさん04/08/12 01:52ID:???
>>223
マニュアルくらい読もうよ・・・
0227nobodyさん04/08/12 08:44ID:aDJWVDD6
>>223
localとglobal...プログラミングのアロハでつね
0228nobodyさん04/08/12 09:35ID:???
ページ切り替えって
headder "Location:index.html";
だっけ?
0229nobodyさん04/08/12 10:02ID:???
/public_html/fairy/page/item/touroku.phpから
/public_html/fairy/data/clist.cgiまで飛ぶのに
.../data/clist.cgiじゃだめなのか?
0230nobodyさん04/08/12 10:03ID:???
多分そんな感じ。
023122904/08/12 10:07ID:???
$clist = '.../data/clist.cgi';
にしたのに、
Warning: file(): Unable to access .../data/clist.cgi in /virtual/drk/public_html/fairy/page/item/touroku.php on line 177
だって;;
だめだ_| ̄|○
0232nobodyさん04/08/12 10:09ID:???
普通こうじゃね?
../../data/clist.cgi
023322904/08/12 10:11ID:???
>>232
おお、あり!
どうやら.../はCGIしか無理だったようだ・・・

$time = data("Ymd");
にするとエラー出るぽウワァァァァァン
Call to undefined function: data()
0234nobodyさん04/08/12 10:12ID:???
dateじゃね?
0235nobodyさん04/08/12 10:13ID:???
パスの指定はCGI云々関係ないし。
023622904/08/12 10:18ID:???
>>234
スマ、あほな間違いだった&ありがと


間違え探し
$all = file($slist);
$yoyaku = "";
$count = count($all);
$put = implode(",", array($id,$item,$syurui,$str,$dex,$def,$luck,$taikyu,$plusa,$plusb.$plusc,$kazu,$memu,$comment,$time,$yoyaku));
$fp = fopen($all,"w");
flock ($fp,LOCK_EX);
rewind ($fp);
fputs($fp,"$put\n");
for ($i=0;$i<=$count ; $i++){
fputs($fp, $all[$i]);
}
flock ($fp,LOCK_UN);
fclose($fp);
データが書き込まれないぽ
0237軟式PHP04/08/12 10:22ID:???
間違え探しワロタ。素直になれよ・・な?初心者君。
023822904/08/12 10:32ID:???
素直になったぽ!
間違い見つかったので糸冬キボン
0239nobodyさん04/08/12 10:33ID:???
$allってカウントした数字だよね?
$fp = fopen($all,"w");
$fp = fopen($slist,"w");じゃないの?

■ このスレッドは過去ログ倉庫に格納されています