【PHP】下らねぇ質問はここに書き込みやがれpart10
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/09/25(日) 02:03:45ID:nLUfPXhDここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>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/
【PHP】くだらねぇ質問はここに書き込みやがれpart9
http://pc8.2ch.net/test/read.cgi/php/1125716012/
0314nobodyさん
2005/10/03(月) 12:11:14ID:???function & bbb() {
// 色々な処理
return $aaa;
}
function bbb() {
// 色々な処理
return & $aaa;
}
function & bbb() {
// 色々な処理
return & $aaa;
}
のなかでどう書くのが一番良いでしょうか?
PHP4でクラスを返す場合は参照にしないと無駄なコピーができるということなのですが。
0315nobodyさん
2005/10/03(月) 12:25:35ID:???関数に渡した時点では、どちらもアドレスが渡されており、実行速度に差はなく、違ってくるのはその値が変更される時で、値渡しの場合に、関数内で変更された値が、関数内のローカル変数にコピーされるよう。つまり、値を変更しない関数ならば、値渡しと参照渡しの差はない。
0316nobodyさん
2005/10/03(月) 12:32:08ID:???参照で返すってどういうこと
引数に渡す変数には値渡しとか参照渡しとかあるけど
実際にやってみればわかるけどreturn & $aaa;でエラーがでる
0317314
2005/10/03(月) 12:47:03ID:???すみません、とんだ勘違いなコード書いてました。
呼び出す方で
$aaa = & bbb();
とやるのと、
function & bbb() {
}
とやるのと、もしくは両方&をつける場合の違いについてでした・・・
あと、自分はCがわからないので、ちょっとイメージがつきにくいのですが、違いは全くないということなのでしょうか?
よく$x = new class()は$x = & new class()と書くほうがいいというのとはまた別の話ということなのでしょうか?
0318nobodyさん
2005/10/03(月) 12:54:34ID:???後者のやり方でやってみたのですが、属性が必要なタグ(font color=〜等)の場合は
どうすればよいのでしょうか?
0320nobodyさん
2005/10/03(月) 14:09:15ID:???http://www.php.net/manual/ja/language.references.return.php
0321294
2005/10/03(月) 14:44:59ID:???俺としては、前者 + 正規表現 (最小限ならば str_replace だけでも) を推奨。
後者でやろうとすると、色々とボロが出てしまわないだろうか?以下の色々と
ボロが出てしまっている、小汚いソースの様に。
<?php
header("Content-Type:text/html; charset=".mb_detect_encoding("ほげ"));
$str = "<Font color=red>文字列</fonT> <font color=\"red>文字列</font> <font color=\"red\">文字列</font> <span style=\"font-size:500%;\">文字列</span>";
$bef = array("/<font(\s+color\s*=\s*(\"(#?[a-z0-9]*)?\"|(#?[a-z0-9]*)?))*>(.+)<\/font>/iU");
$aft = array("<font$1>$5</font>");
echo preg_replace($bef,$aft,str_replace(array("<",">","@"),array("<",">","?"),stripslashes($str)));
exit;
?>
0322294
2005/10/03(月) 14:49:56ID:???echo preg_replace($bef,$aft,str_replace(array("<",">","@"),array("&lt;","&gt;","&#64;"),stripslashes($str)));
0323314
2005/10/03(月) 15:14:40ID:???なるほど。両方に&をつけなければいけないのですね。了解です。
関数の中でnewしてるんで、3箇所に&を書かないといけないんですね。
しかし、そうなるとやっかいです。
クライアントコードの側にも&をつけなければならないのはドキュメントで明示しておくしか方法はないということなのでしょうか?
0324nobodyさん
2005/10/03(月) 15:40:51ID:yF4zapvkプログラミングは初心者で、htmlがちょっとできる程度なので、基本的な疑問があります。
メールフォームなどを作っているのですが、いくつかのテキストボックスなどを作成するときに、
エラーチェックのプログラムなどは、なにも考えずにテキストボックスの項目の順番に記述すればいいのですか?
0326nobodyさん
2005/10/03(月) 16:41:05ID:???その場合、呼び出し側で参照つけ忘れても大丈夫。
むしろ最初からその3つとも&をつけなくても無問題。
>>324
テキストボックスの順番自体に何か意味があるならそれなりに考える必要あるんだろうが、そうでないなら別に気にしなくてよし。
とりあえず状況詳しく書かないと、何でそんな疑問がわいたのかすら想像つかないんだけど。
0328nobodyさん
2005/10/03(月) 17:16:50ID:7v8t3+9llogin.php にてログイン認証し、その際にニックネームをセッション登録しています。
認証後にトップページ index.php に戻り、トップページではサイドメニュー menu.phpを include にて読み込んでいます。
このサイドメニューでニックネームを表示させたいのですが、うまく取得してくれません。
index.php の方で呼び出すときちんと表示してくれるのですが。
原因が分かる方、教えてください。
0331nobodyさん
2005/10/03(月) 19:45:28ID:???0332328
2005/10/03(月) 20:44:44ID:???index は呼び出せましたが、menu のほうだと呼び出せませんでした。
なんでだろう…。
0333328
2005/10/03(月) 22:29:49ID:???menu.php に直接アクセスすると表示されるのですが
include(requireも試した)で読み込んだ時は表示されません。
原因が分かる人いませんかー?! orz
0334nobodyさん
2005/10/03(月) 22:36:36ID:???include のパスをURLで指定していました。
絶対パスにしたところ、きちんと表示されるようになりました。
別のサイトと認識されてしまったのでしょうか…。
何にせよ、ご迷惑おかけしました。
0335nobodyさん
2005/10/03(月) 22:39:14ID:???0336nobodyさん
2005/10/03(月) 22:41:05ID:???単純化するとこんな感じになると思うけど問題なく動くよ。
って、再読込したらそんなオチかよ。。。
テストスクリプトまで書いたので送信ポチっとな。
1.php - セッションの設定、 2.php - includeする、 3.php - includeされる
1.php
session_start();
$_SESSION['name']='hoge';
<a href="2.php">link</a>
2.php
include("3.php");
3.php
session_start(); // 2.phpでsession_start(); しても動作する
echo $_SESSION['name'];
0338nobodyさん
2005/10/03(月) 22:51:58ID:+uOrbyCWメモリが足りなくなってプログラムが途中で止まってしまいます。
unsetを使っても、$var = NULLとしても
全然メモリが解放されないんですがどのようにしたら良いでしょうか?
0341nobodyさん
2005/10/03(月) 23:38:39ID:+uOrbyCWPEARのMail.phpを使って、
SMTPでメールを送っている時にメモリがみるみる内になくなっていきます。
一万通くらい送ると250MBくらい減ります。
require( "Mail.php" );
$param["host"] = "127.0.0.1";
$mail = Mail::factory('smtp', $param);
for( $i = 0 ; $i <= 10000 ; $i++ ){
$mail->send("[email protected]", $head, $body);
}
このような感じになります。
送信の後にunset($mail);としてみたり、
$mail = NULL;としてもメモリが解放される様子はありません。
分かる人助けてください!
0342nobodyさん
2005/10/03(月) 23:41:34ID:+uOrbyCWなるほど。メモリ上限は設定していませんが
設定してやってみます。
プログラムではメモリ解放できないですかね。
0343nobodyさん
2005/10/03(月) 23:47:31ID:???0344nobodyさん
2005/10/03(月) 23:49:26ID:+uOrbyCW登録してる人だけに送ってます
0345nobodyさん
2005/10/03(月) 23:52:51ID:???0346nobodyさん
2005/10/04(火) 00:08:26ID:???そこに専用URLが載ってたりするのありますよね。
あれの仕組みってPHPで出来るんですか?教えてくだされ。
0347軟式PHP
2005/10/04(火) 00:21:10ID:???0349nobodyさん
2005/10/04(火) 08:15:26ID:???0350nobodyさん
2005/10/04(火) 08:39:28ID:???0351346
2005/10/04(火) 11:05:37ID:???こんな便利な機能があることに驚きです。
しかし、xreaでは使えないようでした…。
残念ですが諦めます。
0354nobodyさん
2005/10/04(火) 11:53:41ID:???0355nobodyさん
2005/10/04(火) 11:59:09ID:???最近、XREAで使ってるドメインのメアドで送受信したメールが
届かないことがあるな〜と思ったら、やっぱりトラブル発生してんの!?
でも公式サイトの障害情報見ても何も載ってないんだが・・・
0356nobodyさん
2005/10/04(火) 12:02:52ID:JKocPbjBcopyはファイル全体をコピーする。
renameはディレクトリ構造とファイル名のみを書き換える。
検証するまでもない。
0357nobodyさん
2005/10/04(火) 12:32:57ID:oyC3QmoSありが�d
0358nobodyさん
2005/10/04(火) 13:09:49ID:ogSOlTW8Apacheをインストールするところなんだけど
インストールする際に出てくるウィザードに
Network Domain, Server Name, Administrator's Email Address
の3項目を入力する画面が出てきた。
Email Addressは適当なものを入れるとして
Network Domain, とServer Nameは適当に決めちゃっていいもんなんでしょうか。
XP Homeのローカルで実験するんだから
Network Domainは、C:\ でいいのかな。
それとも適当に、test.com とか書いちゃっていいんですかね。
Server Nameなんかは適当にPCがdynabookだからdynabookとか入れとこうかと思ってるのですが
これでいいんでしょうか。
0359nobodyさん
2005/10/04(火) 13:13:30ID:???ローカルなんだから適当なドメインを考えて入れればいい
サーバーネームは自分のマシン名でも入れとけ
どうせ、アクセスするときの指定はlocalhostか127.0.0.1でやるんだからよ
0360358
2005/10/04(火) 13:30:08ID:ogSOlTW8>C:\がドメインだと思うか?
いや、思いません。思わないけど。ローカルのアドレスを入れとかないと、PHPのコードを実行するときに困るんじゃないかなと
ちょっと思っちゃった。
ドメインもサーバネームも適当でOKということなので安心しました。
アクセスはlocalhostか127.0.0.1で指定するからこの画面で設定しなくてもいいんですね。
どうもありがとうございます。助かりました。
0361nobodyさん
2005/10/04(火) 15:38:29ID:???0363nobodyさん
2005/10/04(火) 18:02:46ID:???m9(^Д^)プゲラッチョ!
0364nobodyさん
2005/10/04(火) 20:36:23ID:F0xENNekサイト作りのノウハウがある方は、ご協力お願いします。
デザイン関係、サイトに載せる文章を書ける方も募集中です。
http://off3.2ch.net/test/read.cgi/offmatrix/1128239507/
(過疎スレのリサイクルです)
0366nobodyさん
2005/10/04(火) 21:33:09ID:???0367nobodyさん
2005/10/04(火) 22:42:10ID:TMWi83Dvfirefoxで見るとバックスラッシュになってしまいます。
$str = "123あいう¥¥";
echo ($str);
こんな風に書いたりしてます。
0369nobodyさん
2005/10/04(火) 23:07:08ID:TMWi83Dv$str = "¥¥1200";
echo ($str);
は¥1200と出力されますが、
$str = "¥¥えんまーく";
echo ($str);
は¥えんまーくと出力されます。
こういうもんなんですか?¥付の値段を出力したいときはどうすればいいのでしょうか?
0371nobodyさん
2005/10/04(火) 23:12:18ID:???&#165; &yen; (&は半角)
0373369
2005/10/05(水) 01:56:22ID:oPPZGTrSレスありがとうございます。
やりたいことは、Accessで出力したCSVファイルを分解してhtmlで出力したいだけなんです。CSV上で既に半角¥マークになってしまっているのでどうしたものかと。
IEでは問題ないのですが...。
>>372
文字コードをいろいろ試していたんですが、いまいちうまく行かないんですよねー。もうちょっと悩みます。ありがとうございました。
0374nobodyさん
2005/10/05(水) 02:01:17ID:???uid 名前
0 高橋
1 伊藤
2 鈴木
というテーブルがあるとします。
そしてuidをGETで取得し、名前を表示するプログラムを作るとします。
もしテーブルに無い番号が入力されたら、エラーメッセージを表示させます。
ここで質問ですが、
「GETしたuidがテーブルのuidに含まれていなかったら」という内容の文は
どのように書くべきでしょうか?
自分で調べて、
if ($_GET['uid'] != $row_Recordset['uid']) { echo "不正なIDです"; exit; }
というのを作ったのですが、
これだとテーブルに含まれるuidも全て"不正なIDです"となってしまいました。
どうしたら良いでしょうか・・・?
ちなみにこの質問内容は、DB板じゃなくてココでOKですよね??
0375nobodyさん
2005/10/05(水) 02:12:49ID:???SELECT ------ WHERE uid = 「GETのuid」
で結果0件ならエラーじゃだめなん?
0376374
2005/10/05(水) 02:30:01ID:???sqlのクエリ部分ではなく、phpの部分でやりたいのです・・・。
自分でも今色々と調べてる所ではあるんですが、
なかなかどうして難しいですね。
0378nobodyさん
2005/10/05(水) 03:30:00ID:???Firefox(Winodws)で試したけど、x5cを円マークで表示すべき
EUC-JP、SHIFT_JISあたりはちゃんと円マークになってたぞ。
(\と&yen;で違うフォントになるのは知らなかったが)
マッピングが変なフォント使ってるんじゃないの?
0379374
2005/10/05(水) 03:37:13ID:???えっ、マジっすか!?
無駄無駄ァ、な事だったとは・・・。
要は、「GETしたuidが、テーブルの中に実在するuidに含まれていなかったら」という
内容の文がうまく記述出来ればOKなのです。
無理というか、無駄な事なのでしょうか・・・。
とりえあず今宵は寝ます。
0380nobodyさん
2005/10/05(水) 03:38:25ID:???uidってやつがテーブル内にあるかどうかの判別って結局SQLで問い合わせてからじゃないと無理じゃん。
だったら、>>375にするのがベストだし、それが普通。
他に複雑な事情があるならそれも書かんとわからんよ。
0381nobodyさん
2005/10/05(水) 04:55:34ID:???>sqlのクエリ部分ではなく、phpの部分でやりたいのです・・・。
だから、SQLで該当するuidが何件あるかを読んで
phpで件数を確認すればいいやん
>なかなかどうして難しいですね。
379の頭の中のほうが難しい。
380氏のいうようにそれが普通というか定石ってもんだ
phpのマニュアルに結構ためになるサンプルあるで。
0382nobodyさん
2005/10/05(水) 05:19:45ID:???0383nobodyさん
2005/10/05(水) 05:55:55ID:SZgLc6+c>PHPマニュアル print_r より
>print_r() と var_export() はvar_dump()と違い、 PHP 5においてオブジェクトのprotected及びprivateのプロパティも表示します。
と書いてあり、「var_dump()はpublicしか表示しないのだろう」と思って試してみた。
結果:var_dump で protected・private が出力されている。
<var_dump>
object(obj)#1 (3) {
["a"]=>
string(6) "public"
["b:protected"]=>
string(9) "protected"
["c:private"]=>
string(7) "private"
}
<print_r>
obj Object
(
[a] => public
[b:protected] => protected
[c:private] => private
)
<var_export>
class obj {
public $a = 'public';
protected $b = 'protected';
private $c = 'private';
}
0384nobodyさん
2005/10/05(水) 05:56:30ID:SZgLc6+c・var_dump()はpublicしか表示しないのだろうと思ったけど、私の勘違い?
・各関数の違いは以下の通り?
print_r : 簡素に出力。第二引数がTRUEの場合、結果を返す。
var_dump : 型などの詳細も出力。
var_export : PHPコードの形で出力。第二引数がTRUEの場合、結果を返す。
0385nobodyさん
2005/10/05(水) 07:47:03ID:???var_dump(英語)には
In PHP 5 only public, private and protected properties of objects will be returned in the output.
と書いてあるから
0386369
2005/10/05(水) 10:22:41ID:Qlmr5ADvわざわざすみません。もっと勉強します。
ちなみにfirefox(mac os X)です。
osXとMAMPという環境でphpを勉強中です。
0387nobodyさん
2005/10/05(水) 10:44:16ID:hgIawq/C$fruits = array("lemon", "orange", "banana", "apple");
sort($fruits);
reset($fruits);
while (list($key, $val) = each($fruits)) {
echo "fruits[" . $key . "] = " . $val . "\n";
}
?>
上はsortを用いて配列をアルファベット順に並べたものですが、
配列をランダムに並ばせるものを作る簡単な方法はありますか?
つまり、やりたい事はアクセスするたびに4つの画像の順番がランダムに入れ替わり表示されるようにしたいのです。
0388nobodyさん
2005/10/05(水) 10:45:58ID:???0389nobodyさん
2005/10/05(水) 10:46:21ID:???0390nobodyさん
2005/10/05(水) 11:29:52ID:???0391nobodyさん
2005/10/05(水) 11:35:44ID:rxjtKeLJ0392nobodyさん
2005/10/05(水) 11:45:40ID:hgIawq/Cありがとう
できました
0394nobodyさん
2005/10/05(水) 12:35:29ID:iJ3zhQF9for($i = 0; $i < count(@$_POST["check1"]); $i++)
{
echo "<p>".$_POST["check1"][$i]."にチェックが入っています";
}
?>
<form method = "POST" action = "<?=$_SERVER["PHP_SELF"]?>"
<table>
<tr>
<td>
<input type = "checkbox" name = "check1[]" value = "PHP">PHP
<input type = "checkbox" name = "check1[]" value = "Perl">Perl
<input type = "checkbox" name = "check1[]" value = "ASP">ASP
<input type = "checkbox" name = "check1[]" value = "JSP">JSP
</td>
</tr>
<tr>
<td>
<input type = "submit" value = "送信" name = "sub1">
</td>
</tr>
</table>
ちょっと確認したいのですが。
この場合、チェック入れたものだけが配列に入って送られるで合ってるでしょうか。
仮にPHP,JSPにチェック入れたとしたら、配列番号0には"PHP"が、配列番号1には"JSP"といった
具合に入れられて送られるといったイメージで合ってますか。
何か勘違いしていたら指摘していただけるとうれしいです。
0397394
2005/10/05(水) 12:47:08ID:iJ3zhQF9回答ありがとうございます。
PHP初めてなもので、このイメージで合ってるのか不安だったので質問しました。
配列表示するんだったらprint_r関数使ったほうがコードが短くなってすっきりですね。
どうもアドバイスありがとうございます。
>>396
PHPもforeach使えるんですね。覚えときます。どうもありがとうございます。
0398nobodyさん
2005/10/05(水) 13:18:45ID:KahEav2gグラフで、左Yのスケールと右Yのスケールが違う複合グラフは作成出来るのでしょうか?
例えば、左Yのメモリは最大値100で棒線グラフ。
右Yのメモリは最大値10000で折れ線グラフといった感じです。
0399nobodyさん
2005/10/05(水) 13:25:55ID:???>配列表示するんだったらprint_r関数使ったほうがコードが短くなってすっきりですね
そういう意味ではなく、print_r($_POST) してみればワザワザ聞かなくても判るでしょ?
という意味だろ。
0400nobodyさん
2005/10/05(水) 13:31:47ID:???ダメでしょうか?
0401nobodyさん
2005/10/05(水) 13:44:26ID:???取り敢えず書く。
叩かれるのを恐るべからず。
0402nobodyさん
2005/10/05(水) 13:57:32ID:???http://nekomimi.s91.xrea.com/_database_test/stock/extract_php.zip
”extract.php”
これはWeb制作板のCGI探索スレで作っていただいたスクリプトなんですが、
作成者さまのPCが飛んでしまったということでサポート対象外になってしまったので、こちらに投書させていただきます。
概要としては、csvファイルの「ランダムに選択された行」から、「指定した列の文字列」を抽出し、表示するというものです。
csvファイルは1行1データという形で収束されています。
このスクリプトで若干不具合があり、
・csvの行が10行以上ある場合、それ以降の行が選択候補から除外される(9行までしか認識しない)
・逆に、9行未満の場合、文字列が表示されない場合がある
というものです。
希望としては、
・行が何行であってもその中から選択し、確実に文字列表示する
というようにして頂きたい次第です。
実際に動いているイメージとしては、このページのようになります。
http://nekomimi.s91.xrea.com/_database_test/stock/
0403nobodyさん
2005/10/05(水) 13:58:54ID:???ボロカスに言われるかもしれないけど、それなりに相手してくれると思うよ。
矢継ぎ早に同じレベルの質問を繰り返すと嫌われるかもしれないけれど。
ボロカスに言われても、指摘内容は正しいことが多いから、ムカつかずに今後に生かせばいい。
0404394
2005/10/05(水) 14:05:38ID:???そうか。
print_r($_POST)すれば配列の中身が見れるから、それをしていたら質問するまでもなかったよねという意味でしたか。
配列だったら、こう書いたほうが便利だよといった意味かと思いました。
まだ基礎的なコードいじって学習してる段階なのでechoばっかり使ってました。
最初の方にちらっとprint_r関数も出てきてたなあ程度だったのでそこまで考えが回らなかったようです。
まあ、もやもやしたイメージが確かなものになったので感謝です。ありがとう。
0405nobodyさん
2005/10/05(水) 15:13:04ID:???<?
#データファイル
$data_file = "dataedit.csv";
#取り出す列-1(「$row = array("0", "1", "2")」とすれば1列目と2列目と3列目を取り出します。)
$row = array("0","3");
$num = count($row);
$data = file($data_file);
for($j = 0; $j < $num; $j++)
{
$result = $data[array_rand($data)];
$val = explode("\t", $result);
echo $val[$row[$j]] . "<br>";
}
?>
0406nobodyさん
2005/10/05(水) 15:13:52ID:???試してないけど
<?
$data = ---- の行以降を以下に変更
$tmp = file($data_file);
$rand_keys = array_rand($input, 10);
foreach($rand_keys as $i) {
$rec = explode("\t", $tmp[$i]);
foreach($row as $j => $k) {
echo $rec[$k] . "<br>";
}
}
0407406
2005/10/05(水) 15:16:15ID:???1行訂正
foreach($rand_keys as $a => $i) {
0408405
2005/10/05(水) 15:18:29ID:???$tmp = explode("\t\n", $data);
を
$tmp = explode("\n", $data);
にすれば不具合はなくなるのではないかと思う
0409nobodyさん
2005/10/05(水) 15:24:21ID:???0410nobodyさん
2005/10/05(水) 15:37:15ID:Cp2lANiyPHPバージョン:4.3.8
APACHE:1.3.28
DBサーバ:Windows2000Server・SQLServer2000
LinuxのPHPからDBサーバにアクセスを行い、データを取得したいのですが
方法が分かりません。
マニュアルには、プラットフォームが違う場合はコンパイル時に
「Sybase拡張モジュール」を使用して下さいとあるのですが、
Sybaseをインストールしなければならないのでしょうか。
0412nobodyさん
2005/10/05(水) 16:04:46ID:Wy1EjQwZ{$user.id} みたいな変数(連想配列)は普通に展開されて表示できますが、
{include file="header.tpl" user_id="$user.id"}
のような感じでやると、header.tplには$userが渡されているようです。
$user.idを渡したい場合はどうすればいいのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています