【PHP】初心者コーナー 2 Released
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
03/03/24 03:06ID:???PHPに関するアホな質問はここでやれ。今回からMySQLも受付開始。
アホな質問であっても詳しく質問すること。
PHPが大嫌いなPerl信者もぜひご参加ください。
前スレ
http://pc2.2ch.net/test/read.cgi/php/1011550860/l50 関連>>2-10
普通の質問はこっちな、【PHP】質問スレッド Part7
http://pc2.2ch.net/test/read.cgi/php/1044478561/l50
0611nobodyさん
03/05/10 16:38ID:FObLwhHb$受け取る変数=$_GET['渡したい変数'];
0613nobodyさん
03/05/11 10:40ID:???マッチしなくなったんだけど何故?
0615nobodyさん
03/05/11 13:11ID:???そんなことが無いのかと思ってコードは省略しますた。
if(preg_match("/title>(.*)<\/title/i", $contents, $regs)){
$title = $regs[1];
}
else{
$title = "No Title";
}
return $title;
で、全部 No Title になる。
0618nobodyさん
03/05/11 19:20ID:7pEqh6Cm将来的にFLASHと連動したショッピングサイトを作りたいです。
0620nobodyさん
03/05/11 22:14ID:???4.3.1で動作確認。
0621nobodyさん
03/05/11 22:27ID:???仕様変更なんてドキュメント読めばわかることだろ。
わけのわからんこといっとらんでデバッグ汁
0622nobodyさん
03/05/12 00:04ID:???ちゃんとマッチするってこと?それとも再現?
>>621
「代わりに読んでください」と言いたいが、
良い機会だし、みンなのデバッグ手法を紹介してくらさい。
ボクは echo, print_r 派です。
0623620
03/05/12 00:17ID:???デバッグはif(debug) echo "$abc";でやって、完成したら全消し。
var_dumpは使ったことないな。
特定が面倒でエラー吐いた辺りを丸ごと書き換えることもしばしば(;´Д`)
今日もデバッグで、ようやく帰宅できるよー
>「代わりに読んでください」と言いたい
ぜひ死んでください
preg_mにしろ.*にしろ完成されてるから仕様が変わるなんて考えられないけどね。
0624620
03/05/12 00:18ID:???0625nobodyさん
03/05/12 00:35ID:???そうよね。
preg_match ( string pattern, string subject [, array matches])
やっぱsubjectを見直すのが一番イイかな?文字コードの問題も考えられるし.
--enable-mbregexは・・・
0626オムそば
03/05/12 03:54ID:X9LLPZqe└b
a に iframe.html
b に iframe001.html 〜 iframe010.html
というフォルダ構成で、b にあるファイルの内ひとつをランダムで
a にコピーして iframe.html で保存(上書き)するってスクリプトを
組みたいのですが、どういう風な感じでやればよいでしょうか?
0627nobodyさん
03/05/12 04:03ID:???ランダムは 数学関数のsrandとrandを使用。(mt_*てのもあるらしい)
0628オムそば@自宅
03/05/12 08:36ID:EKr3VP0UThanksです。
$randmin = 1;
$randmax = 10;
$randval = mt_rand("$randmin","$randmax");
$file = "./iframe".$randval.".html";
copy("$file","../b/iframe.html");
こういった感じでとりあえず出来たのですが、これだとファイル名を
iframe1.html 〜 iframe10.html といった感じにしないとダメですよね?
それだとローカルなどでフォルダを見た時に、ソートが変になってしまい
微妙に気になるのですが、何か良い方法はありませんか?
mt_rand() を使ったのは、こっちの方が高速に処理するみたいな事が
マニュアルに書いてあったので、使用してますが問題は無いですか?
あと、srand()の使い方がいまいち理解できなかったので、使ってないんですが、
問題なく動いているようなので、OKですよね・・・
0629nobodyさん
03/05/12 09:49ID:???自動でやってくれるという話は聞いたことないけど、、
ソートが変になるってのはどういうことか分かんないが、こんなようなことかな。
if ( strlen($randval) < 2 ) $randval = "0" . $randval ; //型キャスト必要?
もしくは、
$randval = str_pad ( $randval, 2, "0", STR_PAD_LEFT ) ;
0630nobodyさん
03/05/12 10:11ID:/i1zSYZ/セッションやPOSTを使わずに値を渡す方法ってありますか?
0631nobodyさん
03/05/12 10:14ID:???このおっさんらしいのだが…http://www.soi.wide.ad.jp/class/20010000/slides/03/
>630
URLに埋め込むか一時的にDATファイルつくるか伝書鳩か
0634nobodyさん
03/05/12 12:04ID:???上記のように必ず配列の先頭に値が入ってる状態で、
「もし配列(の中身)が空だったら」っていう上手い表現ってないでしょうか?
自分はin_array使って
$keys = array_keys($wd);
for($i=0; $i<=count($keys)-1; $i++){
$acv = (array_count_values($wd["keys[$i]"]));
if(count($acv) == "2" and in_array("",$wd["keys[$i]"]) == "TRUE"){
unset($wd["keys[$i]"]);
}
}
こんな風に書いてます。
$wdは連想配列のため$keysを使っています。
0636nobodyさん
03/05/12 13:08ID:c9lQiwrBそれにいっぱいモジュールがあるし
サンプルもWeb上に沢山ある。
strictを使えば厄介な物でも楽チンに作れるし
mod_perlを使えば異様に早くなる。
いい事ずくめだと思うんだが、なんでPHPなの?
できない事が多すぎないか?
小学生でも理解できるから使うのか?
0637動画直リン
03/05/12 13:10ID:lVcTJ8AZ0638nobodyさん
03/05/12 16:30ID:1fjsSv5Hsubstr って1000文字以上ある文字は分割できないんでしょうか。
echo $a = substr($line , 1000 , 1);
1001文字目が出ない・・・んです。
初心者質問ですみません。
0639nobodyさん
03/05/12 17:45ID:???いける。
$lineの1000byte付近をまとめて表示してみたら。
あんがい空だったりして。
あとは、マルチバイト文字でコケてるとか。
0640nobodyさん
03/05/12 21:48ID:???http://pc2.2ch.net/test/read.cgi/php/1046194468/l50
あっちでかき。
0641オムそば
03/05/12 22:22ID:X9LLPZqethanksです。
> mt_srand()つかわないと、連続試行したとき結果がいつも同じにならない?
> 自動でやってくれるという話は聞いたことないけど、、
$randmin = 1;
$randmax = 100;
$randval = mt_rand("$randmin","$randmax");
$randval = str_pad( $randval, 3, "0", STR_PAD_LEFT ) ;
echo ( $randval );
上のスクリプトで、ページをリロードする度に違う数字が表示されていますが、
これって異常なんですかね。(汗
PHP 4.3.1 apache 1.3.27 OS Win98SE でテストしてます。
あと、これを一日一回指定した時間に動かしたいのですが、何か良い方法ありませんか?
スクリプトそのものを教えて頂くと大変楽ですし、助かるのですが、自分のスキル
アップに繋がりませんので、何かヒントのような形でお教え頂けますか?
わがまま&教えてくんで申し訳ありませんが、よろしくお願いします。
0642nobodyさん
03/05/12 22:27ID:???http://accessplus.jp/staff/in.cgi?id=10645
http://www.39001.com/cgi-bin/cpc/gateway.cgi?id=neat
http://www.39001.com/cgi-bin/cpc/gateway.cgi?id=pure
http://accessplus.jp/staff/in.cgi?id=10943
http://www.emzshop.com/goodstyle/
0643nobodyさん
03/05/13 00:54ID:???氏ねヴォケ
0644動画直リン
03/05/13 01:10ID:rppJJuu/0645nobodyさん
03/05/13 01:14ID:1XrriwyUhttp://homepage3.nifty.com/coco-nut
0646nobodyさん
03/05/13 05:21ID:???すまん。4.2.0以降は、自動種付けがデフォルトになってた。
srand()はコールしなくてよくなってたよ。
> Changed rand() and mt_rand() to be seed automatically if srand() or mt_srand() has not
> been called. (Sterling)
自動実行は、unix系ならcron、win98だとタスクスケジューラだっけ。
いずれにしても、定時に実行てのはサーバ側の仕事なので、php単体では無理。
ナニが何でもPHPだ!! ていうなら、方法としては、ブラウザを立ち上げておいてrefreshタグで
一日一回スクリプトを読むか、タスクスケジューラで、一日一回コマンドラインから実行するか、
ログファイルを作っておいて、ユーザがアクセスしたときに、前回更新から一日以上たってたら
更新スクリプトを実行するというphpスクリプトを書くか、いずれかになるかと思う。
借りてるサーバなんかでやろうと思うと3つ目の方法がお勧め。
コマンドラインから実行する方法はマニュアルのhttp://www.php.net/manual/ja/features.commandline.phpを。
適当にphp_rotation.batとかいうファイルを作って、中に「C:\xxx\php.exe C:\xxx\rotation.php」と書く。
ほんでそのbatをスケジューラに登録すればOKだと思う。バッチファイル実行時のログをのこすとか細かいことは
自分でやって。エラーは自動タスクのログに記録されるはず。うちの環境(winxp admin権限)では一応稼動した。
0647オムそば@自宅
03/05/13 09:58ID:qXhuEACothanksです。
3つ目の方法だと、ユーザーがアクセスする度にスクリプトが動いてしまいますよね?
ページ自体の更新はなくても、サーバに負荷がかかると思うので避けたいです。
テスト環境はWinですが、実際に使うのはUNIXなので、cronについて調べたいと思います。
稼動テストまでして頂いてありがとうございました。
0648nobodyさん
03/05/15 16:56ID:7Y8ZpJUBWinXP,IIS,PHP4.3.1にて、session_start()を実行すると、
open("セッションIDらしき文字列", O_RDWR) failed: No such file or directory
とWarningが出るんですが、セッションを使用するにあたり何か設定が必要なんでしょうか?
0649nobodyさん
03/05/15 19:37ID:???今Winじゃないので確認できないが、
セッションを使うためには セッション用のディレクトリを作成、そのディレクトリをphp.iniで指定。
0651648
03/05/16 09:47ID:UDsilOGpレスありがとうです。
/tmpの中のファイルを探してたのはエラーメッセージからわかったから、
ドキュメントルートの直下にtmpってディレクトリ作って試したけど
ダメだったんですよね。
んで、今試しにそのphp.iniの指定を"c:\windows\temp"とか
DOS風の表記にしたらうまく行きました。ありがとうございます。
0652nobodyさん
03/05/16 10:26ID:E+iXS/eKhttp://www.dvd01.hamstar.jp/
0653_
03/05/16 10:33ID:???( ・∀・)/< こんなのみつけたっち♪
ttp://www.yamazaki.90.kg/hankaku/hankaku04.html
ttp://yamazaki.90.kg/hankaku/hankaku10.html
ttp://www.yamazaki.90.kg/hankaku/hankaku09.html
ttp://yamazaki.90.kg/hankaku/hankaku08.html
ttp://www.yamazaki.90.kg/hankaku/hankaku06.html
ttp://yamazaki.90.kg/hankaku/hankaku05.html
ttp://www.yamazaki.90.kg/hankaku/hankaku01.html
ttp://yamazaki.90.kg/hankaku/hankaku02.html
ttp://www.yamazaki.90.kg/hankaku/hankaku07.html
ttp://yamazaki.90.kg/hankaku/hankaku04.html
0654田中
03/05/16 12:31ID:shMd76bE年商1000万円を目標
http://www.c-gmf.com/h16002.htm
0655
03/05/16 17:04ID:TFQDITW8で渡したい値を日本語にしたら文字化けするのですが・・・。
何かのコード変換をしてから渡したほうが良いのでしょうか?
0656nobodyさん
03/05/16 17:06ID:747r2+6H0657
03/05/16 17:09ID:TFQDITW80658nobodyさん
03/05/16 17:19ID:747r2+6H0659
03/05/16 17:57ID:ce7IpZdE0660nobodyさん
03/05/16 18:01ID:747r2+6H思い出した。
コレ、標準ではoffだから>>655の方法
は使えないっぽい。
セッションとか使おう。
0661
03/05/16 18:30ID:iXERQEhI素人です。おながいします。
0662nobodyさん
03/05/16 19:18ID:???0663私も初心者
03/05/16 19:57ID:???「エンコード」「デコード」とかで検索したら、何か分かるかもよ。
0664nobodyさん
03/05/16 20:54ID:???それは文字化けではない !!!!!!!!!!!!!!!!!!
と断定してみる。
0665nobodyさん
03/05/16 21:19ID:???PHPに関するアホな質問はここでやれ。今回からMySQLも受付開始。
アホな質問であっても詳しく質問すること。
普通のPHPの質問はこっちな、【PHP】質問スレッド Part8
http://pc2.2ch.net/test/read.cgi/php/1050249148/l50
0666nobodyさん
03/05/16 21:25ID:???0667nobodyさん
03/05/16 21:34ID:4GEbEPL0http://www.dvd-yuis.com/
えっ!?もう届いたの?
http://www.dvd-yuis.com/
あなたのハートに最速発送!
http://www.dvd-yuis.com/
0668870
03/05/16 22:13ID:fyBqMN4bだから文字ばけですって。
だれか受け渡し値に日本語(EUC−JP)使ってる人います?
アスキーコードに変換したほうがいいすか?
できれば出コードと円コードのコマンドも教えてほしいす。
0670nobodyさん
03/05/16 22:43ID:fyBqMN4b普段 PHP でプログラムを書いている際はエンコード/デコードが自動的に行われているので特に意識する必要はないのですが、フォームで渡されるべきデータを
<a href="hoge.php3?fName=田中">田中さんの処理</a>
というような形で指定したい場合があります。
しかし、URLの ? 以降に「-」「_」「.」を除く非英数文字やマルチバイト文字が含まれる場合、 URL エンコードしておかないといけないという決まりがあります。したがって、上記の記述は URL エンコードされていないため正しく処理されません。
そこで、この URL エンコード関数を用いて、「田中」という文字列を URL エンコードしてやる必要があります。
方法は簡単で、$str = rawurlencode("田中") で $str には「田中」を URL エンコードした結果が格納されます。
067169
03/05/17 16:15ID:giUYFPUq募集しています。HPにバナーを貼るだけで稼げる。
http//www.c-gmf.com/index3.htm
http://www.c-gmf.com/index2.htm
http://www.c-gmf.com/mail.htm
ビジネスパートナー募集中。
オンライン申込後、郵送にて契約書を送ります。
キャッシュバック・年間契約成立後ビジネスパートナー様に
4000円差し上げます。ビジネス方法は直接営業もしくは間接営業
のどちらでも可能です。あなた専用の申込用紙orCGI申込を用意して
いますので安心してください。ビジネスについて、簡単なシステムであり、
バナーを貼るだけで稼げる。4000円×100件=40万円になります。
0672nobodyさん
03/05/19 05:48ID:sM+JzukB参考になるページはありませんか?
単純に、絵文字の2バイトを画像のタグに置き換えるだけだと、
区切り間違って変換されることもありそうで、
そのあたりの処理が知りたいんです。
0673_
03/05/19 07:04ID:???( ・∀・)/< コんなの有ったっち♪
http://togoshi.ginza.st/mona/mona02.html
http://www.togoshi.ginza.st/mona/mona07.html
http://togoshi.ginza.st/mona/mona05.html
http://www.togoshi.ginza.st/mona/monaz08.html
http://togoshi.ginza.st/mona/mona06.html
http://www.togoshi.ginza.st/mona/mona10.html
http://togoshi.ginza.st/mona/mona04.html
http://www.togoshi.ginza.st/mona/mona03.html
http://togoshi.ginza.st/mona/mona01.html
http://www.togoshi.ginza.st/mona/mona09.html
0674bloom
03/05/19 07:08ID:IEVyzYan0675紺野あさみ
03/05/19 07:13ID:???川o・-・)ノ <先生!下記のページがありました!
http://togoshi.ginza.st/yusei/yusei01.html
http://www.togoshi.ginza.st/yusei/yusei09.html
http://togoshi.ginza.st/yusei/yusei05.html
http://www.togoshi.ginza.st/yusei/yusei08.html
http://togoshi.ginza.st/yusei/yusei06.html
http://www.togoshi.ginza.st/yusei/yusei10.html
http://togoshi.ginza.st/yusei/yusei04.html
http://www.togoshi.ginza.st/yusei/yusei03.html
http://togoshi.ginza.st/yusei/yusei02.html
http://www.togoshi.ginza.st/yusei/yusei07.html
0676nobodyさん
03/05/19 07:27ID:???同一ページでやらなきゃならないのかぁ。
ちょと眠いが、頑張ろう。 んーわからん。
表示させたい部分のhtmlを配列に全部入れて、携帯からのアクセスかPCからのアクセスかを判断して、
携帯ならそのままスルー。
PC向けには文字コードAAAAに対応させたAAAA.gifみたいなのを作っておいて
全行ループでeregi_replace()でimgタグに置き換え、みたいなことをすればいいのかな。
上に書いた'表示させたい部分'のは本文のみでもいいし、<html>から</html>まででもいいし。
本文だけだとページ更新あるたびにfor文の条件いじらなくちゃいけないので全部のほうがいいかもねぃ。
//ってキャリアはDocomoだと思って書いてみたんだが、絵文字コードってバイナリ入力?なのかぁ。 もし見当違いだったらすまそ。
0677676
03/05/19 07:38ID:???バイナリって、バイナリエディタで見るアレか。 全く見当違いにも程があるな。
でももしかしたらそんな関数があるかもしれんな。
しかしこんな記述方法もWebに使えるんだねぇ。 しらなんだ。
0678nobodyさん
03/05/19 08:17ID:StH4KvGU0680nobodyさん
03/05/19 15:21ID:???0681nobodyさん
03/05/21 20:27ID:MwGyQR+Z自宅のPCをアパッチとPHP4.xをインストールして勉強しています。
テキストファイルの更新のプログラムを勉強してて、
$filename="tohoho.txt";
$fp=fopen($filename,"w");
//このflock();を使うとえらーがでてしまいます。
flock($fp,2);
fput($fp,$_POST[coment]);
flock($fp,3);
fclose($fp);
以下省略、、、
flockをはずすとしっかり動作するんですが、flockをいれるとエラーがでてしまいます。
どなたかアドバイスお願いします。
0682nobodyさん
03/05/21 23:44ID:???>自宅のPC
flockが使えない環境かと。別の方法でロックを実現しる
0683nobodyさん
03/05/22 00:31ID:???0684山崎渉
03/05/22 01:56ID:???0685nobodyさん
03/05/22 02:11ID:z7+gxK8V「flock()」関数はUNIX系OS上でしか動作しないため!!
0686682
03/05/22 02:12ID:???それの率は高いと思うが、ちょっとマニュアル見たら(マニュアル見ろ>オレモナー)
日本語の説明には記載ないね(笑
http://jp.php.net/manual/en/function.flock.php
でWarningの囲み内一番下の行参照
googleでそれっぽいワードで日本語限定で探すとヒットしないし、
実は知られてそうで、結構知られていない事なのかも知れぬ。
0687682
03/05/22 02:25ID:???WindowsNTでもFAT使ってると駄目なんだけどな。
他の実装の仕方は↓のような感じ
ttp://homepage1.nifty.com/glass/tom_neko/web/web_04.html#uselockfile
#Perlだけど大体いっしょ。
0688nobodyさん
03/05/22 05:45ID:3qhNvpT7flock( LOCK, 2 );# ファイルをロックする
open( COUNT, "./log/count.log" );# カウンターの値が入ったファイルを開く
$count = <COUNT>;# カウンター値を読み出す
close( COUNT );# カウンターファイルを閉じる
$count++;# カウンターを+1する
open( CTEMP, ">./log/count2.log" );# 更新したカウンタの値を別のファイルに一時的に書き出す(※2)
print CTEMP $count;
$ezcount = "";#カウントファイルの数字を絵文字に変換
for ($i = length($count) - 1; $i >= 0; $i --) {
$n = int(substr($count, $i, 1));
if ($n == 0) {
$ezcount = "<img localsrc=\"325\">" . $ezcount;
} else {
$ezcount = "<img localsrc=\"".(179+$n)."\">".$ezcount;
}
}
close( CTEMP );# 一時的に書き出したファイルを閉じる(書き込み完了)
rename( "./log/count2.log", "./log/count.log" );# 一時的に書き出したファイルを本来のファイル名にリネーム
unlink( "./lock/count.lock" );
flock( LOCK, 8 );
close( LOCK );
これをPHPにしたいのですが…だれかお願いします!
0689nobodyさん
03/05/22 06:14ID:???0692nobodyさん
03/05/22 13:02ID:3qhNvpT7四ぬことにします
0693動画直リン
03/05/22 13:08ID:x2YZ4VCE0694nobodyさん
03/05/22 13:38ID:???どんなものがありますか?
参考書やマニュアルでは、単に値が変数名になるだけの
あまり意味のないサンプルしか提示されていないのでよく分か
らないのですが、、。
あらかじめ、何種類かの変数を評価するIF文を書いておいて、
ある変数値が、可変変数名にセットされて初期化された場合に、
IFが動く、というようなことも考えたのですが、これは可変変数
を使わなくてもいいと思うわけです。
変数の値が変化するのに応じて、ダイナミックに変数を定義できるのが
可変変数化で、状況に応じて変動するファジー&ルーズなアルゴルを
とれるのがメリットかと思っているのですが、そもそも変数の生成が
偶侑性をもっている状態で、プログラムはかけるんでしょうか。かけないと
すれば、間違いなく存在するか存在しないかのどちらかが予期される
変数を使うことになるので、可変変数の意義はないようにも思えます。
0695梨
03/05/22 14:34ID:meYOXQTH諸般の事情で配列が使えないFORMからの処理受付とかどう?
0696nobodyさん
03/05/22 14:49ID:anlQKg/20697nobodyさん
03/05/23 00:14ID:???PHPの中からPerlコールすればOK
0698nobodyさん
03/05/23 03:12ID:???0699nobodyさん
03/05/23 09:25ID:???0700nobodyさん
03/05/23 09:29ID:???逝って来い
0702nobodyさん
03/05/23 09:58ID:???Array[0] ... [1] ... [2] ...
って・・・どうすればいいんだろ・・・ヒントください、おながいしまつ
0703nobodyさん
03/05/23 10:13ID:???name="arr[]"
とすれば勝手に配列 $arr に入る。
でなきゃ $array[0] = $_POST['arr'] ; で代入しとけば。
>702
意味が分からん。
explode() の話じゃないのか。その"..."は一体なんだ。
0704nobodyさん
03/05/23 10:17ID:???つまり $_POST['arr'] 。 foreach() で展開するなり。-> $_POST['arr'][0] 〜
0705nobodyさん
03/05/23 10:37ID:???すません、やっとこさ解決、ありがとう
html側のname="array[]"でも確かに配列だけど期待した配列じゃなかったんです(謎
foreachの使い方もよくわからないのでついでに勉強してきます(´A`)
結局、受け取ったデータ'c_pon'を
$post_array = split("\r\n|\n|\r", $_POST['c_pon']);
で期待通りのできますた(´A`)スレ汚しスンマソン、退場しまつ
0706nobodyさん
03/05/23 10:54ID:???そっちも解決しとけ
0707nobodyさん
03/05/23 17:48ID:???赤帽8.0+Apache1.3.27+PHP4.3.1、CLIで
hoge.php
<?php
$date = "2003-05-23";
$hoge = (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs));
var_dump($hoge);
?>
php -f ./hoge.php
これを実行すると、int(10)って表示されるんだけど、仕様ですか?
マニュアルには
bool ereg ( string pattern, string string, array [regs])
となっていたので、eregの戻り値はTRUEorFALSEだと思っていたのですが…
0708nobodyさん
03/05/23 17:56ID:???> マニュアルには
> bool ereg ( string pattern, string string, array [regs])
> となっていたので
ダウト。
0709nobodyさん
03/05/23 18:03ID:oujK57TO0710707
03/05/23 18:08ID:???どういうこと??
0711nobodyさん
03/05/23 19:50ID:1xnUQK07空白ページへ飛ばす処理がしたいんですが
■ このスレッドは過去ログ倉庫に格納されています