【PHP】くだらねぇ質問はここに書き込みやがれpart9
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/09/03(土) 11:53:32ID:7OO4C5e5ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
【PHP】くだらねぇ質問はここに書き込みやがれpart8
http://pc8.2ch.net/test/read.cgi/php/1123431535/
0497nobodyさん
2005/09/12(月) 19:09:52ID:???" の中で " を使うときは以下のように " の前に \ を付ける必要がある(エスケープ処理)。
print "<table width=\"600\" bordercolor=\"#EF9C00\" border=\"1\">\n";
または以下のように " ではなく ' で囲んでもいい。
' で囲ったときは \n は使えないんで \n だけ別途 " で囲んで連結していることに注意。
print '<table width="600" bordercolor="#EF9C00" border="1">' . "\n";
" で囲むのと ' で囲むのは意味が異なるので、PHP マニュアルを参照して勉強してね。
0498nobodyさん
2005/09/12(月) 19:12:13ID:???0500nobodyさん
2005/09/12(月) 19:16:12ID:???0501nobodyさん
2005/09/12(月) 20:03:14ID:???お手合わせ願えますか?
0502nobodyさん
2005/09/12(月) 20:14:12ID:???0503nobodyさん
2005/09/12(月) 20:33:49ID:???いいい
ううう
えええ
等のように、書いたaa.txt(↑コレは4つですが、100個と仮定して)を5つずつ取り出してtableで表示させたいんです。
$data = file("aa.txt");
echo "<table><tr>";
$i=0;
foreach ($data as $bb) {
$i = $i+5;
if($data[$i]==$bb){
echo "</tr><tr>";
}
echo "<td>$bb</td>";
}
echo "</tr></table>";
これを試したんですが、全部横一列表示されてしまいます。
どうしたら上手くいくでしょうか?
0505nobodyさん
2005/09/12(月) 21:11:12ID:???$i = $i+5;これじゃ5、10、15ってなりますね。。。
$data[$i]==$bbになるはずが無かったんですね。
ありがとうございました。
0507nobodyさん
2005/09/12(月) 21:11:56ID:???0508nobodyさん
2005/09/12(月) 21:29:57ID:???最初から$iに5を入れておいて$i = $i+5;をecho "</tr><tr>";の下に持っていったらできました!
0509nobodyさん
2005/09/12(月) 21:42:42ID:???forやwhileのほうが分かりやすくて良いと思うんだが、やはり慣れなんだろうか。
0510nobodyさん
2005/09/12(月) 21:49:35ID:???ぶっちゃけると、どっち使っても良い。
処理により使い分ければいいよ。
foreach() を使うと、楽できる場合も多々あるし、
無理に foreach() を使うようにコーディングする必要もない。
0511nobodyさん
2005/09/12(月) 22:00:22ID:???0512nobodyさん
2005/09/12(月) 23:33:07ID:???ずっと前に書いたスクリプトを見直してたら
foreach (array(0,1,2,3,4,5) as $i) {
とか書いてあった・・・orz
0513nobodyさん
2005/09/12(月) 23:42:21ID:???慣れてくればけっこう便利。
0514nobodyさん
2005/09/12(月) 23:43:04ID:???0515nobodyさん
2005/09/13(火) 00:00:17ID:???時々ビックリするくらい笑えるコード書いてたりするんだよな。
function array_add($a, $b) {
return array_push($a, $b);
}
書いたのの誰だよ!俺だorz
なんか恥ずかしい想い出みたいだよね。
0517nobodyさん
2005/09/13(火) 02:17:40ID:dzuB0cPlまぁいいんでないの、人それぞれのやり方があるのが面白いところ。
0518nobodyさん
2005/09/13(火) 03:13:24ID:???後で見た自分のコードが恥ずかしくなることってあるよなー
逆にそういうのがあるから成長してると言えるわけで。
昔自力で書いたコードとか下手で捨ててしまいたい衝動にかられるけど、
再利用できることもあるから捨てるに捨てられん・・・
0519nobodyさん
2005/09/13(火) 11:05:18ID:???最近書いたコードを見たら、たいして変わってなくて青面した。
0520nobodyさん
2005/09/13(火) 14:06:35ID:T3vnNFvNその2台のサーバ間でデータを同期するスクリプト組もうとしています。
「サーバA(主)」 と「サーバB(副)」では同じPHPスクリプトが動作していて、A上で実行されたスクリプトの
パラメータと同じ情報を、B上の同じスクリプトに投げるための方法を探しています。
HTTP POSTでAに来た要求をそのままBに渡せればいいかなと思ったのですが、PHPのスクリプト上から
HTTP POSTを発行する方法が分かりません・・・
何かいい方法は無いでしょうか。
0521nobody
2005/09/13(火) 14:27:20ID:9pR1WrHUDBは何使ってるの?
MySQLをはじめレプリケーションできるものも数多くあるけど
違うネットワークってことなので、httpで通信するってこと?
0522nobody
2005/09/13(火) 14:28:24ID:9pR1WrHUなんか文字の周りが汚くなってしまいます。
きれいに文字をかく方法ありますか?
0523nobodyさん
2005/09/13(火) 14:35:34ID:T3vnNFvNDBはMySQLです。
間にFireWallが居てポート空けてくれないらしいのでHTTPしか無い感じだったりします・・・
レプリケーションについてはちょっと調べて見ます。
0524nobodyさん
2005/09/13(火) 14:47:30ID:???どういう風に書けばいいか、わかりません。
作成した関数に文字列を渡すと、置換した結果を取得したいのです。
$aaa = kansuu($aaa);
例えば、「表示」だと「表\示」と返したいのです。
で、関数の中で
「―ソЫ�\噂浬欺圭構蚕十申曾箪貼能表暴予禄兔喀媾彌拿杤歃濬畚秉綵臀藹觸軆鐔饅鷭�x�x」
などの文字が存在したらその文字に半角の¥を付加して返したいのですが、
どのように置換処理を書けばよろしいでしょうか?
よろしくお願いします。
0527nobodyさん
2005/09/13(火) 15:43:00ID:???SQL文を作成し、変数に格納しようと思ってます。
文字列と変数をつなげるとき
1)$sql = "select * from $table where key='$key'"
2)$sql = "select * from ".$table." where key= '".$key."'"
と書くのでは、どちらが正しいんですか?
どちらも正常に動きますが、一般的に使われるのはどちらなんでしょうか?
0529nobodyさん
2005/09/13(火) 15:47:08ID:???クォートじゃなくてエスケープな
>>524はエスケープしてどうする気だ。DBにでも突っ込むならmysql_escape_string()とか使え。addslash()でもいいけど。
0530nobodyさん
2005/09/13(火) 16:01:07ID:???うまくいきません。
さわかみファンドからは首尾よく価額を取得できるのですが、SGターゲットジャパン
からはできません。
なにも表示されないのです。
//さわかみファンド 71311998
$InputFile = "http://www.quick.co.jp/qsearch.exe?F=fund%2Fall&KEY1=71311998";
//SGターゲットジャパン 58311008
$InputFile = "http://www.quick.co.jp/qsearch.exe?F=fund%2Fall&KEY1=58311008";
// ファイルを開きます。
$fp = fopen($InputFile, "r");
if ($fp == FALSE) {
echo "error";
exit();
}
while (!feof($fp)){
$s = fgets($fp);
$n = preg_match_all($Pattern, $s, $ar, PREG_SET_ORDER);
for($i = 0; $i < $n; $i++){
print $ar[$i][2] . "<br>\n";
}
}
// ファイルハンドラを閉じます
fclose($fp);
ここ数日悩んでます。どうか原因を教えてくださいませ。
0531530
2005/09/13(火) 16:12:39ID:???環境を書き忘れてました。
所謂LAMP環境です。
RedHat 9
Apache 2.0.40
MySQL 3.23.58(mbstring on)
php 4.2.2
スクリプトはeuc-jpで書いてます。
0533530
2005/09/13(火) 16:14:46ID:???$Pattern = "/(<FONT COLOR=black>)(.*)(<\/FONT>)/";
0536nobodyさん
2005/09/13(火) 16:39:23ID:???たぶん改行の問題だと思う
そのスクリプトだと<FONT COLOR=black>から</FONT>までが1行にないと駄目
0537532
2005/09/13(火) 16:47:05ID:???こう書き換えてみたら?
$s = '';
while (!feof($fp)){
$s .= fgets($fp);
}
fclose($fp);
$n = preg_match_all($Pattern, $s, $ar, PREG_SET_ORDER);
for($i = 0; $i < $n; $i++){
print $ar[$i][2] . "<br>¥n";
}
0538534
2005/09/13(火) 16:49:48ID:???WinXPでShift JIS
マッチした内容は
-----------------
24846
</FONT>
<BR>
<FONT COLOR=FF0000>+
96</FONT>
<!---->
<br>
------------------
0539nobodyさん
2005/09/13(火) 17:05:20ID:???> HTTP POSTを発行する方法が分かりません・・・
fsockopenしてfwriteで送信。
>>522
文字をでかくする。色を薄くする。フォントを変える。
JPEGならクオリティの値(imageJpegの3番目の引数)を上げるかPNGにする。
それでもダメならGDを見放せ。
0540nobodyさん
2005/09/13(火) 17:21:49ID:???fsockopenをキーワードにして探した所、まさに求めていた情報がありました。
ttp://www.stackasterisk.jp/tech/php/searchAction.do?cid=18
ありがとう
0541530
2005/09/13(火) 18:40:35ID:???>>536
たしかに改行コードが含まれています。
この場合$Patternに改行コードを書き込むと良いと思い\rや\nをためして
みましたがダメでした。
取得したhtmlの文字列から改行コードを取り去ればよいと思いますが・・・。
そんな機能を持った関数があるのでしょうか?
>>537
そのとうりに書き換えてみましたがダメでした。
0542nobodyさん
2005/09/13(火) 20:36:22ID:???ユーザー定義関数をつかって、消費税を抜いた値段を表示するスクリプトを
書いたのですが、参考書によると、これの実行結果は「100」のはずなのに
その通りにならず
「function tax($zeikomi) { $zeinuki = $zeikomi / 1.05; return $zeinuki; } print (tax (105)); ?>」
となってしまいます。
どこが間違っているのでしょうか。
<html>
<head><title></title></head>
<body>
function tax($zeikomi) {
$zeinuki = $zeikomi / 1.05;
return $zeinuki;
}
print (tax(105));
?>
</body>
</html>
文字コードはeuc-jp
改行コードはLE
PHPのバージョンは5.05です。
よろしくお願いしますm(_ _)m
0545nobodyさん
2005/09/13(火) 21:12:54ID:???0546nobodyさん
2005/09/13(火) 21:14:10ID:???0547nobodyさん
2005/09/13(火) 22:14:01ID:21KzVdLfhttp://w1.nirai.ne.jp/freeze/install.html
このページを参考にして、環境を作ったのですが、最後のlocalhost/test/phpinfo.phpにアクセスして
確認しようとすると、phpinfo.phpのダウンロード画面が出てきてしまうのですが、なんででしょうか?
初歩的な質問ですいませんが、よろしくお願いします。
0549軟式PHP
2005/09/13(火) 22:19:52ID:???そのページは見てないけど、ダウンロードになるなら
phpのMIMEタイプが設定されていない可能性があるな。
LoadModuleもやってないかも。httpd.confをもう一回見直してみたほうがいいと思う。
0550nobodyさん
2005/09/13(火) 22:36:20ID:???>>549
ありがとうございます。
Apache再起動してみましたが、直りませんでした。
httpd.confもページをみて見直してみましたが、やはり直りませんでした。
どうすれば良いでしょうか??
0551nobodyさん
2005/09/13(火) 22:45:17ID:???0552nobodyさん
2005/09/13(火) 23:03:06ID:/gXbJCT5PHPマニュアルにある方法以外にもっと詳しい情報を
知りませんか?
もし、ありましたら、教えてください。
0553548
2005/09/13(火) 23:03:34ID:???変だね。そのページを見てみたけど別にウソは書いてないし。
Apacheのインストール後の「あなたの予想に反して...」の画面が表示されているのは
確認済みなんだよね?
オマイさんが追加したLoadModule行とAddTypeの行の内容を ***そのまま、何の細工もせず*** に
晒してもらえない?
(そのページからコピペするんではなく、オマイさんのhttpd.confからコピペするんだよ)
0554nobodyさん
2005/09/13(火) 23:12:55ID:???はい、「あなたの予想に〜」の画面は出ます。
追加したのは
LoadModule php4_module c:/php/sapi/php4apache2.dll
と
AddType application/x-httpd-php .php
です。
0555nobodyさん
2005/09/13(火) 23:17:52ID:???貴方の「見直し」が間違ってる可能性が高いかな。
インストール先(インストールの構成)を変えていたり、
ダウンロードしてインストールしたApacheやPHPが説明のものと異なる
そういった場合は記述されている内容を理解した上で適用しないとならない。
その辺が出来てないんじゃないの?
これは動かないという原因ではないが、件のコンテンツの記述で間違っているところがある。
(間違っている人は他にも多くいるが)
>703行 AddDefaultCharset none ←こう書き変える
これではnoneというcharsetを指定することになる。無効にするのだからOffが正しい。
http://httpd.apache.org/docs/2.1/ja/mod/core.html#adddefaultcharset
0556nobodyさん
2005/09/13(火) 23:23:36ID:???0557nobodyさん
2005/09/13(火) 23:25:06ID:???あ、確かにApacheを説明のものと違うバージョンのものを使っていました。。。
説明の物と同じやつでやってみます。
いろいろと教えていただきありがとうございましたm(_ _)m
0558nobodyさん
2005/09/13(火) 23:29:46ID:???0559nobodyさん
2005/09/13(火) 23:43:41ID:???もうひとつだけ質問させてください。
この場合はApacheだけインストールしなおせば、phpはインストールし直さなくて
良いんですよね??
0560nobodyさん
2005/09/13(火) 23:48:49ID:???あとPHPのインストール先とインストールしたパッケージの確認。
コマンドプロンプトで「c:\php\cli\php.exe -v」(小文字のまま)
とした場合の出てくるバージョンとか教えて。
出てこなかったら
・インストール先がその解説通りでない
・インストールしたパッケージがその解説通りのものではない
>>558
メモ帳で修正したのでhttpd.conf.txtになっている。
(修正&上書きだとそんなことはないか)
0561nobodyさん
2005/09/13(火) 23:55:31ID:???下のソースをどのようにすれば良いのでしょうか?
どうかお教えください。よろしくお願いいたします。
while(list($index,$data)=each($data_all)){
if($data[0]) {
print "$index[0]:$data[0]";
}
if($data[2]) {
print "$index[2]:$data[2]";
}
if($data[9]) {
print "$index[9]:$data[9]";
}
print "<br>";
}
0562nobodyさん
2005/09/13(火) 23:55:48ID:???いや、それはPHPの話なので
>はい、「あなたの予想に〜」の画面は出ます。
らしいから、Apacheのインストールは関係ないよ。
説明どおりのバージョンでなくても貴方がインストールした
バージョンに合わせて適切に設定すれば良いだけの話しだし、
新しいバージョンの方が良いでしょ
(ドキュメントはどうしたって陳腐化してしまうものだ)
で、PHPのインストールだけどそこの解説にもあるように
「インストーラはありません」(今は公式のWindowsインストーラ版もあるが)
だから、再インストール云々にはならないよ。
Apacheやphpのデフォルト設定ファイルを変に変更して元に戻したいが
バックアップを取ってなかったとかのパターンは、再インストールして
設定ファイル取り戻す必要はあるかもしれんが。
0563nobodyさん
2005/09/13(火) 23:59:58ID:???「100行あるデータ」ってのは$data_allに入ってるのかい。
それとも$data[x]とかに入ってるのかい?
どっちにせよ if($data[0])とかの判定は怪しいけど。
0564nobodyさん
2005/09/14(水) 00:04:32ID:???100行のデータは$data_allに入っています。
怪しいソースですが全行の表示はできています。
if($data[0])は必要無いですね。。。
0565nobodyさん
2005/09/14(水) 00:12:24ID:???指定されたパスが見つかりません。と出ます。
>>562
でも、どうやれば私がインストールしているバージョンに合った設定になるか分からなくて、、、
ほんと初心者ですいません。
0566nobodyさん
2005/09/14(水) 00:42:48ID:???>指定されたパスが見つかりません。と出ます。
・phpのインストールがおかしい(解説通りでない)
・変更しているApache設定ファイル(httpd.conf)がおかしい。Apache起動時にエラーが出ていない。
の両方。
前者はhttp://www.php.net/get/php-4.3.11-Win32.zip/from/a/mirror
をダウンロードして、解説どおり解凍したフォルダをリネームして
c:\phpのディレクトリになるように設置。
後者は、コマンドプロンプトで「notepad "c:\Program Files\Apache Group\Apache2\conf\httpd.conf"」
と打って、自分がそれまで変更してた内容がちゃんと記述されてるか確認。
0567nobodyさん
2005/09/14(水) 01:01:29ID:???>while(list($index,$data)=each($data_all)){
これを
foreach(range(1,10)){
list($index,$data)=each($data_all);
にするとか
0568nobodyさん
2005/09/14(水) 03:16:11ID:???とか。あんま発想のレベルは変わらんな
どうでもいいけど、配列の要素を行と云うのは少し違和感が
0569nobodyさん
2005/09/14(水) 04:16:19ID:???>>568
レスありがとうございます。
教えていただいたものを改良して
for($i=0; $i<5; $i++) {
に置き換えて、無事動作いたしました。
本当にありがとうございました。
0570nobodyさん
2005/09/14(水) 06:01:45ID:???> for($i=0; $i<5; $i++) {
本当にそこは5なのか?いいのか…
やっぱ「行」と言った場合、コンピュータシステム的な表現では
どう解釈されるのか、一度色々調べて理解してホスィ。
0571nobodyさん
2005/09/14(水) 06:27:53ID:???どのような制御文を書けばよいのでしょう?
0574nobodyさん
2005/09/14(水) 09:48:16ID:m0wxPPXHphplibはphp5で使えますか?
0575nobodyさん
2005/09/14(水) 10:29:40ID:???0577nobodyさん
2005/09/14(水) 11:39:45ID:???0578nobodyさん
2005/09/14(水) 11:49:13ID:???0579nobodyさん
2005/09/14(水) 11:52:01ID:???実は、DBに登録されているもののうち、リンクがあったら、その部分だけ削除したいのです。
$p_string = str_replace ("<a href=\"*\">", "", $p_string);
みたいな事をしたいのですが。
よろしくお願いします。
0580nobodyさん
2005/09/14(水) 11:52:24ID:???httpd.confに文を追加する時に
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
#LoadModule ssl_module modules/mod_ssl.so
#
# ExtendedStatus controls whether Apache will generate "full" status
最初こうなっているのですが、
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
#LoadModule ssl_module modules/mod_ssl.so
LoadModule php4_module c:/php/sapi/php4apache2.dll
#
# ExtendedStatus controls whether Apache will generate "full" status
このように付け足すのですか?
それとも
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
#LoadModule ssl_module modules/mod_ssl.so
#LoadModule php4_module c:/php/sapi/php4apache2.dll
# ExtendedStatus controls whether Apache will generate "full" status
このように付け足すのでしょうか??
0582579
2005/09/14(水) 11:58:23ID:???やはり正規表現でひとつひとつ可能性(英字、数字、時には2バイト文字)をつぶすしかないのですね。
一括で全て対象にできれば便利だと思いましたので。
ありがとうございました。
0585nobodyさん
2005/09/14(水) 12:16:51ID:???使い始めたところです。php5での参考資料が見つからなくて。
>>576
他に似たようなことをするライブラリがあるということですか?
教えていただけませんか?
0586579
2005/09/14(水) 12:18:48ID:???strip_tagsなんていう関数があるんですね。
教えていただきありがとうございます。
ただ、今回はリンクだけなので、正規表現を使わせていただきたいと思います。
0587nobodyさん
2005/09/14(水) 12:38:09ID:???#から始まる行はコメント文として無視されますので
有効にしたい行は先頭の#を削除
無効にしたい行は先頭に#を挿入
0590nobodyさん
2005/09/14(水) 14:01:12ID:???0591nobodyさん
2005/09/14(水) 14:03:51ID:???phplibのセッション管理に興味があったんですが、PDOだとできませんよね?
で、ADOdbってのを見つけたんですが、これってどうですか?
0593579
2005/09/14(水) 14:53:49ID:???とすることで、期待通りの動作をしてくれました。
どうやら私の努力不足だったようです。
ご迷惑をおかけしました。
0594nobodyさん
2005/09/14(水) 14:56:50ID:???上のプログラムを使って画像の貼り付けのプログラムを作成したのですが
画像が下のリンク先のようにおかしくなってしまいました。
(貼付前)・・・http://land.issaigassai.com/cgi/upload/source3/No_0101.jpg (12,874 バイト)
(貼付後)・・・http://land.issaigassai.com/cgi/upload/source3/No_0102.jpg (20,874 バイト)
このように貼り付けた画像がおかしく表示されるのはどういう原因で発生するものなのでしょうか。
なお、貼り付けた環境は以下の通りです。
OS:Red Hat Linux release 8.0 (Psyche)
httpd-2.0.40-11.9
PHP:4.3.2
0595nobodyさん
2005/09/14(水) 15:00:38ID:???phplibやADOdbでは、セッションに保存される情報がDBに格納できるみたいで、それを使ってみようをしているところです。
http://phplens.com/lens/adodb/docs-session.htm
標準だとサーバ上のファイルに保存されるんですよね?
0596594
2005/09/14(水) 15:03:15ID:???以下が使用したプログラムです。
〜〜index.html〜〜
<HTML><BODY bgcolor="#FFFFFF">
<DIV align="center">
<FORM enctype="multipart/form-data" name="pl_info" action="./form.php" method="post">
<INPUT TYPE="hidden" NAME="_template_confirm" VALUE="./form.php">
<table>
<tr><td>画像選択</td>
<td><input type="file" id="upfile" name="upfile"></td>
</tr></table>
<TABLE width="500">
<TR><TD width="250" bgcolor="#FFFFFF" align="CENTER">
<INPUT type="submit" name="SUBMITBUTTON" value="確認画面へ" onClick="NEXT()">
<INPUT type="hidden" name="page" value=""></TD>
</TR></TABLE></FORM>
</DIV></BODY></HTML>
〜〜form.php〜〜
http://land.issaigassai.com/cgi/upload/source3/No_0105.txt
■ このスレッドは過去ログ倉庫に格納されています