【PHP】くだらねぇ質問はここに書き込みやがれpart4
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
05/03/13 16:08:32ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>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/
0167nobodyさん
2005/03/21(月) 14:14:44ID:???(1) ちゃんとhttpdの設定でHTTPヘッダに適正な文字コードの出力がなされ、
かつHTMLドキュメントのMETAの方でも適正な文字コードが指定されてれば
まず問題はないので絶対とは思わない。しかしブラウザによってはPOSTする
文字コードが混乱して変なことになったことがあるので、
余り混在させるべきではないと経験的に考える。
(2) DWを知らんので回答できず
0169nobodyさん
2005/03/21(月) 18:49:50ID:???echo ltrim('web_content/text','web_cont');
上と下では結果が結構違うんだけども・・
何故に?
あ、やりたいことは親ディレクトリ名を切り取りたいだけです。。orz
0170nobodyさん
2005/03/21(月) 19:05:27ID:???どうおかしいと感じたのか書いてないので想像するしかないですが、
ltrimの2つ目のパラメータの意味を勘違いしているものと思われます。
ltrimの2つ目のパラメータは「削除したい全ての文字をリスト」したものです。(not 文字列)
1つ目のltrimは、8文字目のtでパラメータに無い文字を発見するので、それ以降の文字が返されます。
2つ目のltrimは、12文字目の/でパラメータに無い文字を発見するので、それ以降の文字が返されます。
目的にそぐわない関数だと思われます。
0172nobodyさん
2005/03/21(月) 19:35:59ID:???0173nobodyさん
2005/03/21(月) 20:59:31ID:???ltrim($xxx, "-");
って載ってるから同じような物かなーと思ったけど、
第2パラメータの文字列が配列として1文字ずつ比較(?)されてたから、
第1パラメータのみに存在する文字が出た時にそこから後ろが抽出された訳・・かな?
>>170 (なんかカコイイ。。Thanks!)
>>171
>>172
ありがとうございました。
と、言うわけで質問します。
カレントディレクトリ名を取得する関数などはあるのでしょうか?
フルパスではなくて、ディレクトリ名です。
www.xxx/php/index.htm の場合、 php とディレクトリ名を取得したい。
0174nobodyさん
2005/03/21(月) 21:04:01ID:???これってPHP4のスクリプトは書き換えないと使えないの?
0175nobodyさん
2005/03/21(月) 21:39:18ID:???$path = "www.xxx/php/index.htm";
echo basename(dirname($path));
0176131
2005/03/21(月) 23:25:37ID:???亀レスですが、ご丁寧にありがとう。
まだPHPを触り始めて1週間とかなので、
非常に参考になります!
0177nobodyさん
2005/03/22(火) 18:29:04ID:LgrnIX4+ログファイルに<!--- --->で囲まれた部分を複数出力する方法を
お尋ねしたところ
$reg = "/<!--- (.+?) --->(.+?)<!--- \/\\1 --->/";
preg_match_all($reg, $RetrieveFile, $DataPrint);
と御教授いただいたのですがechoの書き方がわからず参ってます。
echo $DataPrintと書いてもecho $DataPrint[0とか1とか2とか]書いても
全てArrayになるのですが、$regの2番目の(.+?)に該当する部分を
出力するにはどうしたらいいのでしょうか?
0178軟式PHP
2005/03/22(火) 18:53:07ID:???0180nobodyさん
2005/03/22(火) 23:19:38ID:???0181nobodyさん
2005/03/22(火) 23:23:26ID:???0182nobodyさん
2005/03/23(水) 21:06:12ID:???0183nobodyさん
2005/03/24(木) 12:27:03ID:uQ7Kwr2a0184nobodyさん
2005/03/24(木) 12:50:25ID:???0185nobodyさん
2005/03/24(木) 16:11:55ID:cbGEPWrcといったように複数の条件を指定して、その値に従ってページを遷移するPHPスクリプトはご存じでしょうか?
探したのですが、レッツPHPのダウンロードカウンタは1つの条件しか持てないようなので・・
http://php.s3.to/data/#dl
0188nobodyさん
2005/03/24(木) 19:58:00ID:???ページを遷移する、という意味が分からないんだが…
こんなのが欲しいんか?
<?php
$foo = ceil($_GET['foo']);
$bar = ceil($_GET['bar']);
$null = ceil($_GET['null']);
//リダイレクトするURL
$urls[0][0][0] = 'http://www.google.co.jp/';
$urls[0][0][1] = 'http://www.yahoo.co.jp/';
$urls[1][1][0] = 'http://www.goo.ne.jp/';
・
・
header('Location: '.$urls[$foo][$bar][$null]);
?>
0189185
2005/03/24(木) 20:42:36ID:???そういう感じです。
何処を見ていいかわからなかったもので検索後もいろいろ試してみたんですが・・
やってみます、ありがとうございました。
0190185
2005/03/24(木) 20:50:30ID:???http://hoge.com/?product=foo&version=1.2&os=mac
0191nobodyさん
2005/03/24(木) 21:36:58ID:???それリダイレクトなんかじゃなく
ちゃんとデータベース作ってやった方がいいですよ
0193nobodyさん
2005/03/25(金) 03:25:56ID:EQZt/eu0以下のようなスクリプトをシェル上で実行すると ghijk がちゃんと
出力されるのですがweb経由でスクリプトにアクセスすると何も表示されません。
どうすればwebでも読めるようになりますか?
<?php
$data = "abcdef\nghijk\nlmnopqr";
$fp = popen("/usr/bin/grep 'i'", "w");
fputs($fp, $data);
pclose($fp);
?>
0196nobodyさん
2005/03/25(金) 14:33:31ID:???それをifに渡してやることって可能ですか?
以下のようなイメージです。
$f = 'is_string($str) && strlen($str) > 0';
if($f){
// 文字列
}else{
// それ以外
}
0199nobodyさん
2005/03/25(金) 15:30:26ID:???0200nobodyさん
2005/03/25(金) 15:42:25ID:???そういう意味じゃなくて、194はコンソールアクセス(成功した方)と
同等の環境(権限とかパスとか)をWebアクセスにも与えろってことだと思うよ。
0201nobodyさん
2005/03/25(金) 15:55:13ID:???入力されたものをevalするのはやめろ
readfile(\"/etc/passwd\");
とか入力されるぞ
0204193
2005/03/25(金) 19:31:21ID:???えっと、grepのパスも/usr/bin/grepとフルパスで指定しているし
grepのパーミッションも-r-xr-xr-xの状態ですけど、これ以外にも
環境を合わせないといけないところがあるということでしょうか?
0206193
2005/03/25(金) 20:22:33ID:???とりあえずerror_logには何も残ってません。
ブラウザー上にはエラーさえも出ません。
念のためtelnetでwebサーバーにつなげてみましたが以下の通り
ヘッダ以下には何も書いてありませんでした。
$ telnet www 80
Trying xxx.xxx.xxx.xxx...
Connected to www.
Escape character is '^]'.
GET /~myuser/test.php HTTP/1.0
HTTP/1.1 200 OK
Date: Fri, 25 Mar 2005 11:16:58 GMT
Server: Apache
X-Powered-By: PHP/4.3.10
Content-Length: 0
Connection: close
Content-Type: text/html
Connection closed by foreign host.
$
0208193
2005/03/25(金) 21:11:43ID:???なるほど。そういうものだったんですか。
サーバー管理者ではないのでphp.iniとかの書き換えはできませんが
error_reporting(E_ALL);
を付け加えてやってみました。error_reporting関数を使っても
エラーは何も出てこないですねー…
0209nobodyさん
2005/03/25(金) 21:36:57ID:???display_errorsやほかその他エラー関連の設定は?
エラー関連の設定はほぼ全部ini_setで変更できる
0210nobodyさん
2005/03/25(金) 23:41:48ID:???0211nobodyさん
2005/03/26(土) 02:13:41ID:???popenで開いて、開いたプロセスに$dataを入力として渡してるが、
プロセスからの出力は、拾ってないぞ?
popenは一方向のパイプしか扱えないから、
proc_openをつかえ。
んで、fputsで$data渡した後、fgetsなりなんなりして結果を取得してくれ。
proc_openの使い方はpopenとは異なるからマニュアル嫁よ。
0212193
2005/03/26(土) 06:11:40ID:???ini_setで変更できるの初めて知りました。
とりあえず以下を追加しましたがやはり何もエラーは残りませんでした。
ini_set("display_errors", "on");
ini_set("log_errors", "on");
ini_set("error_log", "log.txt");
0213193
2005/03/26(土) 06:12:06ID:???proc_openのマニュアルttp://php.s3.to/man/function.proc-open.html
を読みました。よくは理解できなかったのでサンプルを参考に作ってみました。
やはりシェル上では動きますがweb上では何も表示されませんでした。
<?php
$data = "abcdef\nghijk\nlmnopqr";
$descriptorspec = array(
0 => array("pipe", "r"), // stdin is a pipe that the child will read from
1 => array("pipe", "w"), // stdout is a pipe that the child will write to
2 => array("file", "/tmp/error-output.txt", "a") // stderr is a file to write to
);
$process = proc_open("/usr/bin/grep 'i'", $descriptorspec, $pipes);
if (is_resource($process)) {
fputs($pipes[0], $data);
fclose($pipes[0]);
while(!feof($pipes[1])) {
echo fgets($pipes[1], 1024);
}
fclose($pipes[1]);
proc_close($process);
}
?>
0214nobodyさん
2005/03/27(日) 12:04:17ID:VfQV7VpEphpを使えるように設定しているのですが、どうも期待通りに動いてくれません。
/home/*(username)/public_html/php以下でのみphpを動かしたい
open_basedir = php
user_dir = public_html
とやってみたのですがダメでした。
どの辺の設定をいじればいいのでしょうか?
0216nobodyさん
2005/03/27(日) 17:08:31ID:???それはPHPじゃなくてhttpサーバの仕事だよ
Apacheなら.htaccessで設定できるから該当のスレにどうぞ
0217nobodyさん
2005/03/27(日) 18:30:34ID:o5yBDsfR$a = new TestClass();
$b = &$a;
$aと$bが同じものかどうか(内容が同じというわけではなく、
指し示すメモリの場所が同じ)を検知したいのですが、
なにか良い方法はあるのでしょうか?
どうかご教示下さい。お願いします。
0219nobodyさん
2005/03/27(日) 18:51:03ID:???メモリのマッピングをになっているリファレステーブルで
同じ値が割り当てられていることをもって、指し示す
メモリの場所が同じと見なすしかないと思う。
それとも「同じ値が割り当てられている」ことを調べたいのかな?
0220nobodyさん
2005/03/27(日) 19:16:43ID:o5yBDsfRやはり無理っぽいですね・・
どうもありがとうございます。
0222nobodyさん
2005/03/27(日) 22:49:37ID:???可能だとしたらどうやったらいいのかまったくわかりません。
どなたかご教授よろしくお願いします。
0224nobodyさん
2005/03/28(月) 00:50:15ID:???サーチかなんかのランキング上げたいんジャマイカ?
0226nobodyさん
2005/03/28(月) 07:35:35ID:???そうです。でも田代砲まで強力じゃなくて。
10分間に1アクセスくらいでいいです。
PHPじゃなくてJavaScriptで作れるんですか?
PHPで簡単に作れないでしょうか?
作り方のヒントだけでも教えてください。お願いします。
0227nobodyさん
2005/03/28(月) 12:02:19ID:???1
2
3
4
";
$dat = preg_replace("/1(.*)4/","",$dat);
結果が以下のようになりそうでならないのですがどうしてでしょうか?
1
4
0229nobodyさん
2005/03/28(月) 12:47:19ID:???preg_replace("/1(.*)4/m","",$dat,'m')でもダメでした^^;
洗濯物を干しながら考えてみます
0232227
2005/03/28(月) 13:26:01ID:???$dat = preg_replace("/1(.*)4/m","\\1",$dat);
とすれば結果が23となるので改行が問題なのはわかるのですが/mをつけても
複数行にはマッチしないようです。複数行の解釈を間違えているのでしょうか?。
0233nobodyさん
2005/03/28(月) 13:30:50ID:???.(ドット)を改行にマッチさせるのはsです
$dat = preg_replace("/1(.*)4/s","\n",$dat);
0234232
2005/03/28(月) 13:37:54ID:???$dat = preg_replace("/1(.*)4/s","$1",$dat);
0236nobodyさん
2005/03/28(月) 16:29:39ID:AxvngZW7今まではクラス化されてないPHPコードべた書きのファイルを作り、
グローバル変数として使うというやり方をしていました。
しかしより洗練されたやり方をと思い、設定ファイル自体を
クラス化し、ゲッター(セッターは必要ないですよね)で値を取得
というやり方を考えました。
前者が駄目なやり方とは思いませんが、後者のやり方は一般的な
オブジェクト指向プログラミングにおいて正しいやり方でしょうか?
オブジェクト指向プログラミングにまだ慣れていないので変な質問かも
しれませんが指揮者のご意見をお聞かせいただければと思います。
0237236
2005/03/28(月) 16:35:37ID:???class Config {
var hoge;
var fuga;
// コンストラクタ
// ここで値をセットするのでセッターはいらない?
function Config() {
hoge = "hoge";
fuga = "fuga";
}
// ゲッター
function getHoge() {
return $this->hoge;
}
function getFuga() {
return $this->fuga;
}
}
0238236
2005/03/28(月) 16:45:56ID:???失礼しました。
ちなみに今回お聞きしたいのはどちらかというと小規模な開発
というよりも中規模・大規模開発を視野に入れた保守性重視の
オブジェクト指向ガチガチの開発の場合を想定しています。
0239nobodyさん
2005/03/28(月) 17:24:23ID:???別に決まりは無いので好きなように作ればいいと思いますよ。
自分の場合は値の変わらない設定値は定数にしてます。
0241nobodyさん
2005/03/28(月) 19:44:33ID:???どのようなやり方になるのでしょうか?配列に慣れていないので
よくわからないのです。ご指導宜しくお願いします。
0242nobodyさん
2005/03/28(月) 19:51:02ID:???配列に慣れてないのは構わないんだが、
それ以前に自分の伝えたいことを書き表すのに慣れてないような気が。
そこで指し示す"テーブル"とは具体的に何?
0244nobodyさん
2005/03/28(月) 20:26:42ID:???htmlのテーブルを使って素直に書くと、
<table>
<tr><td><?php echo $array_data[0][0]; ?></td><td><?php echo $array_data[0][1]; ?></td>〜</tr>
<tr> 〜</tr>
〜
</table>
つー風にも書けるけど、それさえも分からんってことじゃないでしょ?
何に困ってるのかよく分わかんないよ。
0245226
2005/03/28(月) 23:06:17ID:???探したけど見つかりませんでした。
0246nobodyさん
2005/03/28(月) 23:11:38ID:VOOnUpPoindexファイルがindex.htmlじゃないとダメで、
テンプレ部分とかいちいち書き直すの面倒なんです
0248nobodyさん
2005/03/29(火) 10:39:10ID:???0251nobodyさん
2005/03/29(火) 13:10:08ID:???>244とヘッダーにおっすおらエクセルよろしくな!って書けば終わりじゃね?
それ以外だとエクセル調べるしかないのでスレ違いだと思われ
0253nobodyさん
2005/03/29(火) 14:02:19ID:fSc5qMirすべて取り除きたいのですが、下のようにしても取れてないようです。
どこが間違えてるんでしょうか?
$hoo=$_POST['hoge'];
$hoo=str_replace(" ","",$hoo);
0254nobodyさん
2005/03/29(火) 14:56:39ID:???0255nobodyさん
2005/03/29(火) 17:06:13ID:???当方、PHP 4.3.9 を先日インストールしました。
<?php
$name = $_SERVER["PHP_SELF"];
echo $name;
?>
と書いても何も表示されません。
スーパーグローバル変数がPHP 4.1.0 から使用できることは知っているのですが、
それ以外にphp.iniの設定などがあるのでしょうか?
0256nobodyさん
2005/03/29(火) 17:22:55ID:???<?php
phpinfo();
?>
0258nobodyさん
2005/03/29(火) 18:42:20ID:3cB8cobm"a" => "10",
"b" => "20",
"c" => "30"
);
$pop = array(
"20",
"30"
);
という二つの配列があって、$arrayから、$popの値が同じデータを削除したいのですが
なんか上手い方法ないですか?
0259258
2005/03/29(火) 19:01:41ID:???foreach($array as $key => $val){
$flag = 0;
foreach($pop as $del){
if($val == $del){
$flag = 1;
}
}
if($flag != 1){
$newArray[$key] = $val;
}
}
です。
0260nobodyさん
2005/03/29(火) 19:10:51ID:???じゃだめ?
0261nobodyさん
2005/03/29(火) 19:23:44ID:???print array_search($value,$array);
}
てのもありかと。
0262261
2005/03/29(火) 19:25:18ID:???0264nobodyさん
2005/03/30(水) 02:30:53ID:???0265nobodyさん
2005/03/30(水) 02:48:37ID:???■ このスレッドは過去ログ倉庫に格納されています