トップページ⇒php
853コメント275KB

【PHP】初心者コーナー 3 Released【スローモード】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/06/11 06:24ID:???
PHPに関するアホな質問はここで、マターリやろな。
ファイル MySQL PostgreSQL 正規表現でも なんでもいってみ
でもな、アホな質問であっても詳しく質問しろよ。 ネタはおもしろく書けよ。

前スレ http://pc2.2ch.net/test/read.cgi/php/1048442813/l50

■PHPの普通の質問はあっちな、【PHP】質問スレッド Part8
 http://pc2.2ch.net/test/read.cgi/php/1050249148/l50
■PHPへ移行したいPerl信者はあっちな、【待望】PerlユーザのためのPHP入門
 http://pc2.2ch.net/test/read.cgi/php/1046326634/l50
■マニュアル嫁ってうるさいのがいるからちょっとは嫁な、
 http://www.php.net/manual/ja/
■おまえ初心者なら入門本くらいかっとけな、PHP関連の書籍(但しPHP出版系お断り)
 http://pc2.2ch.net/test/read.cgi/php/985315574/l50
■これはなズープスと読むらしいがあっちな、XOOPS
 http://pc2.2ch.net/test/read.cgi/php/1031736248/l50

でもな、ここで書きたかったらここで書き。 あとは関連な、>>2 
0376nobodyさん03/07/11 09:57ID:???
HTTPヘッダーやらPHP内で使用してるcodingやらHTMLのMETAでの指定やらサーバにUpする際のエンコード指定やら
考えるべきは沢山あるな。

で、本にはSJISで書いてあるってどういうこと?
つーか書名キボンヌ。
037737203/07/12 03:12ID:???
すいません。よく見たら、EUCで書いてありました。
付いているCD-ROMがSJISとEUCに分かれていて、
僕がSJISを参照しているだけでした。

一応、本の名前は「そのまま使えるPHPサンプル100選」 技術評論社
です。

申し訳ないついでにもう一つ質問なんですけど、PHPは半角スペース
は意味がないんですか?サーバー系のはあるだなんだ〜ってこと
聞いたことがあるんですけど。あー馬鹿っぽい質問だな〜
0378nobodyさん03/07/12 03:40ID:???
"mona" . "giko" -> "monagiko" のように文字連結する時や、
$mona = "";
$hanyan = "";
の「=」の位置を揃えたいとかなら 半角スペースの個数は関係ないよ。

p r i nt みたいに、PHP本体の解釈を妨げるような半角スペースの挿入は有害。

PHPが出力したHTMLの半角の話ならWeb制作板にカエレ!!
037937203/07/12 05:57ID:???
ありがとう。

ここにいさせてください。
0380nobodyさん03/07/12 07:34ID:???
初歩的な質問かもしれませんが、
ttp://www....../hoge.php?hoge=1
などするのはかっこ悪いので、
ttp://www....../hoge.php?hoge
というURLで処理を行いたいのですが可能でしょうか。
実際には、この=の先には特に意味は持たしません。

ページが長いので、?hogeの部分で判断できれば、
そのリストだけ表示するようにしようと思っています。
よろしくお願いします。
038136803/07/12 07:38ID:???
>>369
thanx
そっか来年か・・・またイロイロ復活するんだろうなぁ。
0382nobodyさん03/07/12 09:10ID:tmgiXdLP
>>380
$_SERVER["QUERY_STRING"]
と
$_SERVER["argv[0]"]
にhogeが入る。
argvは一般にコマンドライン用だからWebで使うならQUERY_STRINGの方かな
0383nobodyさん03/07/12 09:13ID:???
>argvは一般にコマンドライン用だからWebで使うならQUERY_STRINGの方かな

argv:コマンドライン引数
QUERY_STRING:環境変数

そもそも使い道が全然違うと思われ。
0384nobodyさん03/07/12 12:49ID:qK/j+nNB
Wwindows98+Apache1.3.27環境は改行コードがCRLFですが差分取得
をする際に意図する結果が得れません。PHPで\nにしていてもテキス
トに記録するとCRが追加されているみたいで
Range: Bytes=**-
で既得分のバイト数を渡して1文字b熾ヤって来ない緒ヤを期待してb澆R
の個瑞舶ェだけゴミが封ヤってきます。bQch型スクなbナ専用ブラウャUでエ
ラ=[になります。ャeキストに記録bキる改行コードbr\nにしてもャ_メでし
bス。何かよい対緒�@はないでしb蛯、か。お願いbオます
0385nobodyさん03/07/12 12:53ID:???
>>384
PHPの前に読点について学んでくれ。
0386nobodyさん03/07/12 14:35ID:???
ブラウザがCookieをOnかOffにしているかを
知りたいんですがどういった命令がありますでしょうか?
0387nobodyさん03/07/12 15:20ID:???
1ページ目でcookieをあげる。2ページ目であげたcookieかどうかチェックする。
どの言語でも定型のやりかただと思うよ。
038838003/07/12 20:21ID:???
>>382-383
ありがとう。
0389nobodyさん03/07/12 23:50ID:???
Windows版では、fopen()のパラメータで
バイナリー指定(rbとかwbとか、そんな感じ)
があるので、それ付けてバイナリーとして
扱って見れ

あと詳しく書くのはよろしいが、折れみたいに
PDAで読み書きしてる椰子もおるんで、
適当に文切ってな
0390nobodyさん03/07/13 09:07ID:???
Wwindows98+Apache1.3.27環境は改行コードがCRLFですが差分取得
をする際に意図する結果が得れません。PHPで\nにしていてもテキス
トに記録するとCRが追加されているみたいで
Range: Bytes=**-
で既得分のバイト数を渡して1文字も返って来ない状態を期待してもCR
の個数分だけゴミが返ってきます。2ch型スクなんで専用ブラウザでエ
ラーになります。テキストに記録する改行コードを\r\nにしてもダメでし
た。何かよい対処法はないでしょうか。お願いします
Wwindows98+Apache1.3.27環境は改行コードがCRLFですが差分取得
をする際に意図する結果が得れません。PHPで\nにしていてもテキス
トに記録するとCRが追加されているみたいで
Range: Bytes=**-
で既得分のバイト数を渡して1文字も返って来ない状態を期待してもCR
の個数分だけゴミが返ってきます。2ch型スクなんで専用ブラウザでエ
ラーになります。テキストに記録する改行コードを\r\nにしてもダメでし
た。何かよい対処法はないでしょうか。お願いします
0391nobodyさん03/07/13 18:53ID:8ZbS77HL
本当に初歩的な質問で申し訳ないのですが
以下のような index.html と test.php があって
index.htmlのリンクをクリックしても何も表示されないのですが
何か宣言が足りないのでしょうか?

[index.html]
<html>
<body>
<a href="./test.php?mode=home">home</a>
</body>
</html>

[test.php]
<?php
print("$mode");
?>
0392nobodyさん03/07/13 19:09ID:???
>>391
参考にした資料が古いと思われ。
print($_GET['mode']);
でいけますよ。

ここの「警告」を読まれることをおすすめする。
http://jp.php.net/manual/ja/language.variables.predefined.php

あとprintは括弧がいらなかったりechoでも同じだったりするけど
そこら辺は好きなように書いてよかです。
039339103/07/13 19:15ID:???
>>392
ありがとうございました。
まさかバージョン違いだったとは・・・
0394あぼーんNGNG
あぼーん
0395nobodyさん03/07/13 22:32ID:???
install.txtどおりにやったのですが、インストールでいきなりこけてます。
解決のヒントをよろしくお願いします。

OS:
WindowsXPPro(sp1a)

Webサーバ:
Apache1.3.27(Windows版)
インストール先C:\Program Files\Apache Group\Apache

PHP(zip):
PHP 4.3.2(Windows版)
インストール先C:\Program Files\php

症状:
phpファイルを実行しようとすると、ダウンロードダイアログが表示されて、プログラムを実行できない。

関係ありそうなこと:
(1)php4ts.dllはphp4apache.dllと同じフォルダ(C:\Program Files\php\sapi)にいれた。
(2)php.ini-distをphp.iniにリネームし、C:\WINDOWSにいれた。
php.iniのなかで、doc_rootをC:\Program Files\Apache Group\Apache\htdocsに設定。
(3)httpd.confには、
LoadModule php4_module "c:/Program Files/php/sapi/php4apache.dll"
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
を追加しています。
0396nobodyさん03/07/13 23:26ID:???
>>395
php4ts.dllはpathの通ってるところに放り込むこと。
つか、install.txtちゃんと読んでるようなんで、
そこにはNT系の場合のやり方が書いてあったでそ
デフォでWindowsインストールしてるのなら、
c:\windows\system32ディレクトリ

0397404.HDML ◆StMXML.EXE 03/07/13 23:28ID:???
>>395
>(1)php4ts.dllはphp4apache.dllと同じフォルダ(C:\Program Files\php\sapi)にいれた。

"php4ts.dll"は、"C:/WINDOWS/system32"フォルダ内に収めて下さい。
後、Apache1なら"AddModule"宣言を忘れていませんか?
039837203/07/14 04:19ID:???
>>397
"AddModule"宣言ってなんですか?
0399nobodyさん03/07/14 04:24ID:???
>>398
ネタなのか釣りなのか騙りなのか分からないけど、
このあたりをブックマックしておいて悩んだ時や暇な時に見ておくとよい。
http://japache.infoscience.co.jp/
040039503/07/14 10:43ID:???
お返事ありがとうございます。・・・いまだにハローワールドできません。(苦笑)
>>396
install.txtによると、
So where does php4ts.dll has to be to be properly loaded ?
php4ts.dll is searched in the following order:

1) in the directory where apache.exe is start from
2) in the directory where php4apache.dll is loaded from
3) in your %SYSTEMROOT%\System32, %SYSTEMROOT%\system and
%SYSTEMROOT% directory.
Note: %SYSTEMROOT%\System32 only applies to Windows NT/2000/XP)
4) in your whole %PATH%

で上の設定は2)にしたつもりです。ちなみにc:\WINDOWS\system32にphp4ts.dllをいれても同じ症状でした。
というより、2)の設定で、php4ts.dllの名前をphp4ts.dll.oldなどに変えると、php4apache.dllが読み込めない
とのエラーがでたので、php4ts.dllの読み込みはできていたのではないでしょうか?

>>397
httpd.confにAddModule宣言
AddModule mod_php4.c
を入れると、
[warn] module mod_php4.c is already added,skipping
とでたのでAddModule宣言はコメントアウトしています。
0401nobodyさん03/07/14 10:43ID:???
今までずっと疑問だったんですけど
何故PHPのマニュアルって色んなサイトで掲載されているの?
Googleで検索すると同じ(内容)マニュアルばっかり引っかかって悲しい。
0402nobodyさん03/07/14 12:43ID:???
>>401
そうやってヒットさせて自サイトのアクセスを増やすため。
しかし掲載しているマニュアルが古いと頃したくなる
0403404.HDML ◆StMXML.EXE 03/07/14 13:48ID:???
>>400
ぅぃ。試しにアナタとほぼ同環境であろうWindowsXP Pro SP1使って
Apache/1.3.27とPHP/4.3.2をインスコしてみたんだが、、

何の問題無くphpinfo()内容が表示出来たぞ?
php.iniに関しては、php.ini-distをリネームしただけで内容の編集すら
していない。一体、どうなってやがる?

ちなみに、俺が設置したパスは以下の通り。

Apache/1.3.27(msi Package) → C:/
# Cドライブ直下

ActivePerl/5.8.0(msi Package) → C:/usr
# これは必要無いけど

PHP/4.3.2(ZIP Package) → C:/usr/local
# Linuxっぽく(Linuxなら、"/usr/local/lib"だけど)

php.ini → C:/WINDOWS
php4ts.dll → C:/WINDOWS/system32

原則的に、>>397で書いた事以外はしていましぇん。
0404nobodyさん03/07/14 15:00ID:???
PHPでテキストカウンタを作ってHTML内に
<?include(counter.php);?>
で挿入しましたが数字がでません。index.htmlをindex.phpに
書き換えたところ、数字がちゃんと表示されました。
これはなぜなんですか?

検索エンジンに登録することを考えるとindex.htmlをindex.phpに
書きかえると面倒なのであまりそうしたくありません。
0405nobodyさん03/07/14 15:52ID:???
VineLinux2.6でphp4.3.2使ってるんですが、
使いたいオプションが初回インストールで入れていなかったので
後から追加しよう、と思いやっているのですがphpinfo()のほうが全く変化なしっ! 実際にインスコもされていない模様。
./configure clean して、その後下記の./configureしてもアカン。

こういうもんなんでしょうか?
オプションの後入れは無理ですか?(´・ω・`)

参考(下の行が追加したオプション
./configure --with-apxs=/usr/sbin/apxs --enable-mbstring --enable-mbregex
--with-gd --with-jpeg-dir=/usr/lib/ --with-zlib-dir=/usr/lib

>>404
あなたの使っているWebサーバで *.html はphpが動かない仕様になってるからですよ〜
confや.htaccessいじれば*.htmlでphp動かせますよ。
0406nobodyさん03/07/14 16:53ID:???
>>405
make installした?
Apacheのrestartは?
040740503/07/14 17:15ID:???
>>406
レスありがとうっす。
ええ、もちろん make intall や restart 、これでもダメだったのでOS再起動までしてました。

で、たった今解決してしまいますた。
$ make clean
makeにcleanなんて存在するのを初めて知りました。。(恥
make cleanしたあとはなんてことなく、上手くいきました・・・
040839503/07/14 20:12ID:???
>>403
うお。わざわざインスコしてくれたんですか?
どうもすみません。

とりあえず、あとで原因追求するためにhttpd.confとphp.iniのバックアップをとった後、
インストールディレクトリを変えて、>>397の要領でPHPとApacheの再インストールしてみます。
ついでにApache2でも試してみます。

Apache+PHP+PostgreSQLで幸せになれると思ったんですが、あふぉには険しい道のりらしい。
ウィンドウズにこだわらんと素直にPC-UNIXしたほうがいいんかな。

お騒がせしました。
0409よん ◆StMXML.EXE 03/07/14 22:37ID:???
>>408
つーか何故、WindowsにApache入れてPHP入れる事位に失敗してるのかよく理解
出来ないのだけれども。フォルダに必要ファイルを放り込むだけじゃないの。
httpd.confだって、数箇所書き加えるだけなんだし。

httpd.conf(前略)

#LoadModule headers_module modules/mod_headers.so
#LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule unique_id_module modules/mod_unique_id.so
LoadModule php4_module C:/usr/local/php/sapi/php4apache.dll

(中略)

#AddModule mod_unique_id.c
AddModule mod_so.c
AddModule mod_setenvif.c
AddModule mod_php4.c

(中略)

AddType application/x-tar .tgz
AddType image/x-icon .ico
AddType application/x-httpd-php php phtml
AddType application/x-httpd-php-source phps

(後略)
0410nobodyさん03/07/15 00:16ID:???
>>confや.htaccessいじれば*.htmlでphp動かせますよ。

どうすれば良いのか教えていただけませんか。
参考になるページとかでも良いんでお願いします。

0411nobodyさん03/07/15 02:13ID:???
>>408
またApacheの口が変わった関係があるのかと思ったけど、
Apache/1.3.27 ○PHP4.2.3、○PHP4.3.2、○PHP4.3.3RC1
Apache/2.0.47 ×PHP4.2.3、○PHP4.3.2、○PHP4.3.3RC1
#PHP4.2.3が×なのは正常。

条件
・WindowsXP Pro SP1
・php4ts.dllはそれぞれのバージョン同梱のものを、それぞれのsapiディレクトリに
・php.iniは読み込ませない。
・httpd.confはapacheインストール直後のものに以下の2行を加えたのみ
 AddType application/x-httpd-php .php .phtml
 LoadModule php4_module "c:/usr/php4/sapi/php4apache.dll"
上記を、CGIやshtmlのAddHandlerの下あたりに追記。
#実際にはphpのバージョンごとにphp423とかphp432に変えたり、
#Apache2はphp4apache2.dllを指定してます。

AddModule mod_php4.cは指定しないが、同じバージョンの付属のhttpd.confでも
公開時期の違いで記述に差(ClearModuleListの位置だったか、有無だったかな)があって
指定しないと駄目な場合もあった。[warn] module mod_php4.c is already added,skipping
となってるのなら、指定しないでOK。

apacheのインストールディレクトリ化のhtdocsに<? phpinfo(); ?>のスクリプトを
放り込んで、動作するか、正しい値が取れるかで確認。

ところで、httpd.confでは"C:/Program Files/Apache Group"のように
括ればスペース付きのディレクトリもOKだが、php.iniもそうだっけ?
(ディレクティブにもよるかも) あと\と/が必ずしも同義にならない
ディレクティブもあったような気がする。
0412404.HDML ◆StMXML.EXE 03/07/15 02:16ID:???
>>405
どこぞのサイトで「一度インスコしたPHPを再設定する為に再インスコする場
合、元有るファイル群を根刮ぎ消しとかないと設定が反映されてない」みたい
な内容のメモを見た事が有る気がするけど。。実際はドウナンダロウ。

って、解決済だったのか。。(・∀・∀・)

>>410
具体的には以下の一文を".htaccess"に書き加えたりします。
以下では、".php",".phtml","html"の拡張子でPHPを動作させます。

AddType application/x-httpd-php php phtml html

但し、アナタが利用しているウェブサーバで".htaccess"による設定変更を
許可していれば、の話でっせ。
0413404.HDML ◆StMXML.EXE 03/07/15 02:25ID:???
>>411
>AddModule mod_php4.cは指定しないが、同じバージョンの付属のhttpd.confでも
>公開時期の違いで記述に差(ClearModuleListの位置だったか、有無だったかな)があって
>指定しないと駄目な場合もあった。[warn] module mod_php4.c is already added,skipping
>となってるのなら、指定しないでOK。

これは知らなかった。公開時期の違いって具体的には、いつといつの違い?
俺が試したのは、昨日そのうちにダウソしたもの(Apache/1.3.27)なんだけど。
0414nobodyさん03/07/15 03:26ID:???
>>412
がんばって勉強してみます。

読み方はエイチティーアクセスと読むんでしょうか。
0415nobodyさん03/07/15 03:29ID:???
続けてすみません。
.htaccessはセキュリティ上置かない、と言うサーバがありましたが
セキュリティ弱いんですね。
0416404.HDML ◆StMXML.EXE 03/07/15 06:23ID:???
>>414-415
>読み方はエイチティーアクセスと読むんでしょうか。

その通り。

>.htaccessはセキュリティ上置かない、と言うサーバがありましたが
>セキュリティ弱いんですね。

そりゃユーザ任意で好き勝手な設定されたらサーバ管理しづらいからね。
但し、ウェブサーバ管理者の設定によって".htaccess"で変更できる内容を
細かく制限できるので、一概に「セキュリティが云々」というのも、只の
怠け文句の様にしか聞こえんわな。

ああ、そうそう。".htaccess"は、"Apache(アパッチ)"というウェブサーバにて利用できる、
ディレクトリ毎の設定ファイルの事です。
ウェブサーバとしてApacheを採用していない所では使えませんよ。
0417山崎 渉03/07/15 11:06ID:???

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0418nobodyさん03/07/15 11:10ID:1Nim6t2Z
掲示板を作成しています。htmlspecialcharsでhtmlを無効にしているのですが、
一部のタグを使用できるように独自タグを実装し、
[code][/code]を<pre></pre>タグに置き換えています。改行は<br>に置き換えしています。

問題は<pre>タグ内の改行文字も<br>に置き換えているので、見た目上は問題ないのですが、
コピペすると、改行のない1行としてペーストされてしまうのです。
<pre>タグ内の改行が\nならきちんと改行されてコピーできるのを確認しました。

[code]〜[/code]で囲まれた文字内の改行文字だけを"~"などの
特殊な(使わなそうな)文字に置き換える方法はないでしょうか?
表示時に"~"を\nに置き換えたいと思っています。
情報不足でしたら、ご指摘ください。

windows2k apache 1.3.27 php4.2.3の環境で作業しています。
よろしくお願いします。
0419nobodyさん03/07/15 11:12ID:DBSRX3iv
ローカルでPHPをテストしたいんですが
Apacheをインストールしないとだめですか?
0420nobodyさん03/07/15 11:31ID:???
age
0421nobodyさん03/07/15 12:33ID:VrVVC0RB

function error($msg){
echo $msg;
exit;
}

を入れると

Fatal error: Cannot redeclare error() になる…

因みに別の設定ファイルにおいて require してます
0422nobodyさん03/07/15 12:36ID:dUuUFsTq
メールフォームを作ってそこからメールが送られてくるとリナックスサーバに
メール内容を残したいのですがどうすればいいんでしょうか・・・助けてください。
0423nobodyさん03/07/15 12:52ID:???
誰か>>422の文章の訳を助けてください
0424nobodyさん03/07/15 12:57ID:???
メールフォームからリナックスサーバへメールを送信するんじゃねーの?
で、クライアントがサーバのメールを読んで削除してしまうのを
残したいってことか?
0425nobodyさん03/07/15 14:13ID:VrVVC0RB
>>421
requireでなくしたら治った…なんだったんだ
0426nobodyさん03/07/15 14:23ID:dUuUFsTq
>424
だいたいそんな感じなのですが
htmlでメールフォームを作り、送信を押すとリナックスサーバにメールを
送るということなのですが、やり方がわからなくて・・・
メールアドレスに送るのは簡単にできましたが・・・。
よろしくお願いします。
0427nobodyさん03/07/15 14:30ID:???
自動生成したテキストファイルをある操作でパーミッションを変えて
追記できないようにしました。ですが次回そのファイルにアクセスしよ
うとした時にパーミッションを変えた情報はどこにも残していないので
書き込みモードで開くとpermission deniedのエラーになります。

if(!($fp = fopen(***,**))){ error_trap()}
してもエラー処理は続行されますがエラー文は返ってきます。
これを回避するにはどうすればよいでしょうか?
パーッション情報を得て回避させるか完璧なエラー回避の構文に
するかだとは思うんですが具体的な知識がないので困ってます。
ググっても良い解決策は見当たりませんでした。
よろしくお願いします
042842703/07/15 14:43ID:???
ちなみにデバッグの度にphp.iniを書きかえるのは避けたいです
0429nobodyさん03/07/15 15:12ID:???
>>427
書き込む前にパーミッションを変更したらええやん。
0430nobodyさん03/07/15 15:43ID:???
>>427
is_writable("file")で書き込み可能か調べればいい
043142703/07/15 17:21ID:ptJK4UDQ
>>430
おお!そんな手もあるんですね。ありがとうございます。
応急処置でstat(filename)でやってみましたがそちらに切り替えて
みます
0432nobodyさん03/07/15 17:51ID:???
インストールできません

Windows 2000
php 5.0.1b1-win32.zip
apache 2.0.47

手順どおりphpのファイルを展開。
apache起動時にcannnot load c:/php/sapi/php4apache2.dllが
ロードできませんとのエラーメッセージ。
ファイルはあるけど、ロードできないです。
043342703/07/15 17:54ID:ptJK4UDQ
>>430
成功です。ありがとうございました
0434nobodyさん03/07/15 17:56ID:???
>>432
PHP5を入れたいのにphp4apache2.dllを組み込もうとしてるの?
もしPHP4の間違いならすでに動かしている方のhttp.confの一部を
見せてもらうとか
0435nobodyさん03/07/15 17:58ID:???
>>422
>>426
何がやりたいのか?
そもそもメールフォームからのメールの送信は出来ているのか?
そのメールをサーバに置いて何かしたいという事なのか?
0436nobodyさん03/07/15 18:02ID:???
>>434
Download sectionで一番上にあったから5をとったけど
4のがいいのか。

変えてみます。
043739503/07/15 18:19ID:???
原因がわかりました。

httpd.confの
LoadModule php4_module C:/usr/local/php/sapi/php4apache.dll
をいれる位置が問題だったみたいです。
最初は176行目あたりに

# Example:
# LoadModule foo_module modules/mod_foo.so
LoadModule php4_module C:/usr/local/php/sapi/php4apache.dll

としていたのですが、>>411を参考にして、CGIやshtmlのAddHandlerの下あたり848行目に追記したところ
うまくいきました。なんか納得いきませんが。

ちなみに、Apache2ではこのような問題は発生せずすんなりでした。謎。
0438nobodyさん03/07/15 19:04ID:???
>>434
バージョンsageたら上手く逝った。
産休
0439nobodyさん03/07/15 19:19ID:???
PHP5は大規模商用サイトに向いているかもしれんが構造化に関する
部分以外はまだ何が変わったか調べる手間がもったいないと思う。
PHP4.3をいじくり回してみてある程度飲み込めてからでいいんじゃない
すか?
0440nobodyさん03/07/15 19:21ID:ptJK4UDQ
PHPコンパイラがホスイ
0441nobodyさん03/07/15 23:07ID:???
$line =~ s/^(..)(...)//;
正規表現してください,お願いします。
0442nobodyさん03/07/16 00:27ID:???
また見にきたらスレ違いでした。
すみませんです・・・
0443nobodyさん03/07/16 00:40ID:4pRAgQGC
少し板違いかもしれませんが、ここぐらいしか思い当たらなかったので・・

あるデータベース(何故か不明)のテーブルを書き出したtxtファイルがあり、
それをPosrgres+PHPのシステムに移してほしいと頼まれました。
(手元にはそのtxtファイルしかなく、元のデータベースは既に無いらしい・・)
が、あるフィールドがtextareaだったらしく、途中で改行が入っているのです。
id   name   abc(textarea)   tel
1  あああ  あああああ  11111
2  いいい  いいいいい  22222
3  ううう  うう   −−−(ここで改行)
\ううう  33333     −−−(改行の続き)
4  えええ  えええええ  44444
といった感じです。

Excelにインポートして少し配置を変えてからエクスポート、それから
COPYコマンドで入れ直すつもりだったのですが、途中の改行が邪魔をして
(上の例だと、「¥ううう」が、あたかもidのように居座っています)
困っています。しかもレコードは5000件ほどあり、手で直すわけにも・・・

どうにか上手くExcelでいじれる形まで持っていけないでしょうか?
お願いします。
044441503/07/16 00:48ID:???
>>416
どうもありがとう。
少しづつですがわかってきている状態です。
ちなみに僕が使っているとことはファイル設定が出来るそうです。

PHPどころかプログラム初心者なのでめちゃ苦労している状態です。
そもそも、PHPを始めたのはDBを作りたかったからです。
それ以外にもPHPが優れているところはどこなのでしょうか?
皆さんがなぜPHPをやり始めたのか聞かせてもらえませんか。
に比べてそれ以外に
044541503/07/16 00:50ID:???
ごめんなさい。

>>に比べてそれ以外に
↑これいりませんねw
0446nobodyさん03/07/16 00:51ID:???
>>443
データもってきたアホにやらせれば?


ってのは冗談で
本来の行末のフィールドに絶対改行が入らないなら、
一行ずつ取っていってフィールド数がたらんかったら
次の行を追加するようなスクリプト作れば?
0447nobodyさん03/07/16 00:52ID:???
>>443
改行を取り除くっていうかデータを整形するスクリプト
書けばいいんちがう?PerlでもPHPででも。
044844703/07/16 00:54ID:???
かぶった。スマソ。
0449nobodyさん03/07/16 01:32ID:APFwOkck
>>443
というよりタブ空文でも改行でもデータを拾うようにして4フィールど
毎に1つ目のフィールドが数字である事をチェックして真なら改行。
これでよいはず。前述でも同じ結果が得れたらなんでもいいだろうけど
0450nobodyさん03/07/16 01:38ID:???
>>449

ほげほげ
1
1

ってデータが入ってたらどうすんだべさ?
0451404(・∀・∀・)HDML ◆StMXML.EXE 03/07/16 01:42ID:???
>>444
俺の場合、PerlよりハイカラなイメージがPHPに有ったからというだけの理由。
ちなみに今でもド素人の部類に入ると思います。Perlの勉強すらすっとばして
いきなりPHPから始めちゃった訳ですから。
そもそも、自前でアクセス解析スクリプト程度のものを作れればいいかなー、
程度の目標だったんで上達する事も無く。
今借りてるレンタルサーバがSQLに対応してくれていないせいも有って、データ
ベース系を勉強する機会も興味も沸かないし。
0452nobodyさん03/07/16 01:48ID:APFwOkck
>>450
データ4個周期を基本にチェックしてるわけだし。よほどいいかげんな
DB処理でないかぎりIDとデータが混同される事はないでしょ。
0453nobodyさん03/07/16 02:07ID:???
>>452

id  name  abc  tel
1  あああ  あああ(改行)
1(改行)
1  090-xxxx-xxxx(改行)
2  あああ  あああ  090-xxxx-xxxx(改行)

ってのを
split /\t|\n/

ってやるとややこしくなんね?

違うやり方をいってるならスマソ。
045441503/07/16 02:55ID:???
>>451
そうなんですかw
僕の方は幸い、なんでも出来そうな環境が整っています。



DBまでの道のりは長そうなので、まず何Pかカウンターを作ってみました。
で、次なんですけど、何をやろうか迷っています。皆さんの参考を教えてください。

まだ、面白いと思える段階ですw
0455nobodyさん03/07/16 09:14ID:APFwOkck
>>453
まず1行分と予測する生データを4つバッファリングして5つ目のデータ
を参照。5つ目がIDデータだと判断できたら1行分を修正済みを格納す
る配列へ代入。もし5つ目がIDデータでないなら4つ目とくっつける。
で、6つ目をチェック。以下同様。
根本的に異常なデータが混じっていない限りきっちり修正出きると思う。
処理はややこしいかもしれないが確実。無条件な状況判断ではどこか
でおかしな処理をしやすいから串だんごみたいにして1本ずつ丁寧に
修正してやるとよいかも。
2ch互換スクの故障データの修正で体験した
0456nobodyさん03/07/16 16:45ID:IyV1t1TM
Cの__LINE__みたいなマクロって存在しますか?(現在のスクリプト内の行No)
自作のエラー用の関数で、何処で起きたか表示させたいのです
045741803/07/16 17:05ID:???
418です。
力業っぽいですが、解決しましたのでお知らせします。

#<pre class="code">〜</pre>に置き換え後、
$msg = str_replace("\n", "<br />", $msg);
$array = split("pre", $msg);
for($i = 0; $i<count($array); $i++){
if(strstr($array[$i], "class=\"code\"")) $array[$i] = str_replace("<br />","~~", $array[$i]);
}
$msg = join("pre", $array);

表示処理で
$msg = str_replace("~~","\n", $msg);


ありがとうございました。
0458nobodyさん03/07/16 21:11ID:???
変数を明示的に宣言しないと使えないようにする(エラーがでるようにする)ことは出来ないのでしょうか?
(C言語で言うところの int i; のように)
タイプミスで一文字違っただけで数時間も悩むのはもうイヤ!
0459nobodyさん03/07/17 01:05ID:???
>>458
つこてるバージョンによっても違うが、
error-reportのレベルをNOTICEも出力するようにすると出ない?
error_reporting(E_ALL)とか。
http://jp.php.net/manual/ja/function.error-reporting.php

あとは折れは"$文字列"の正規表現で、ファイルあたりの出現回数を
カウントしたりしてる。変数名に固有のプリフィクスつけて管理してるので。
0460nobodyさん03/07/17 06:00ID:???
>>459
get_defined_varsでいいんじゃないの?
0461nobodyさん03/07/18 07:11ID:???
WindowsCE向けのphpはありませんか?
もし存在するならどこにあるか教えてください。
0462nobodyさん03/07/18 10:22ID:???
>>461
Perlなら聞いた事があるが…
0463nobodyさん03/07/18 23:43ID:Uzp0kmuO
PHPの事全く分かりません。
Mac OS �] 10.2.6ですが、
PHPのバージョンてどこをみれば分かるのですか。
0464あぼーんNGNG
あぼーん
0465nobodyさん03/07/19 00:27ID:???
>>464
ナイスタイミング
0466nobodyさん03/07/19 01:26ID:???
>>462
うーん、Perl@CGIなら僕も聞いたことあるのですが、、、残念です。
0467703/07/19 07:32ID:???
>>463
phpinfo見れ
0468nobodyさん03/07/19 12:46ID:???
>>463
CGI/CLIなら、php -v
関数:phpversion()
定義済み定数:PHP_VERSION
0469nobodyさん03/07/22 10:50ID:???
ジャンプさせるために
header("Location: http://hogehoge.com");
をつかってみたのですが、これだとリファラが残ってしまいます。

ソケット関数使わずにリファラを消すにはどうしたらいいですか?
0470nobodyさん03/07/22 20:45ID:???
>>469
困って問題があるのか?

不特定多数を別のサイトに送り込んでカウンタを無駄に上げたりするような用途位のような気がするんだが。困るのは。
0471nobodyさん03/07/23 02:19ID:???
それだったらソケット使ってます。
てか、もう一つページを挟めばいいかな。
適当にがんがって見ます。
0472PHP初心者03/07/23 21:32ID:8eneuWCZ
上でもGETやPOSTについてでてますが、
↓は上のフォームに記述して送信した文字列を下のフォームに表示する、
というものですが、

<body>
<form method="GET" action="form.php">
<p><input type="text" name="text1" size="40"> <input type="submit"
value="送信します" name="b"></p>
<p><input type="text" name="text2" size="40" value="<?php echo $_GET['text1'] ?>"></p>
</form>
</body>

実行すると、

<b>Notice</b>: Undefined index: text1 in <b>C:\Apache Group\Apache\htdocs\samples\form.php</b> on line <b>11</b><br />

というエラーが出ます。どこがおかしいのか、わからなくて困ってます。PHPは4.3.2を使ってます。
よろしくお願いします。
0473nobodyさん03/07/23 21:34ID:???
>>472
取りあえずどこが11行目か解るソース出せやボケ。
0474あぼーんNGNG
あぼーん
0475nobodyさん03/07/23 21:37ID:???
>>473
<p><input type="text" name="text2" size="40" value="<?php echo $_GET['text1'] ?>"></p>

ここが11行目です。
■ このスレッドは過去ログ倉庫に格納されています