トップページphp
1001コメント340KB

【PHP】下らねぇ質問はここに書き込みやがれ 24

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん2006/07/07(金) 14:54:53ID:KnVubDvE
PHPに関するくだらねぇ質問用スレです。
ここならお前の下らない質問に回答があるかも知れません。

まず読め【PHP マニュアル】
http://www.php.net/manual/ja/

過去スレは>>2
0858nobodyさん2006/07/20(木) 22:48:24ID:???
>>857
あるある
0859nobodyさん2006/07/20(木) 23:05:47ID:???
>>854
> という配列を返してくれる関数はありますか?
ある。

> また、その逆をしてくれる関数はありますか?
PHP5以降でならある。
0860nobodyさん2006/07/20(木) 23:06:09ID:eXAIKTBk
マルチバイトで「山田」と「田中」のように複数の文字列のうち、
どちらか一方の文字列をマッチさせるときはどのようにしますか?

単にマッチさせるだけなので、正規表現関数ではなくて
文字列関数でループ処理した方がいいですかね?
(マルチバイトのmb_eregとか試してみたけどうまくいかなかった)
0861nobodyさん2006/07/20(木) 23:12:56ID:???
>>853
> A include(http://hogehoge.com/my_function.php);
これはhogehoge.comのWEBサーバーにお願いしてファイルをダウンロード(名前をつけて保存と一緒)している。
そのため、取得できる内容はWEBサーバーの出力結果の内容になり、
PHPとして解釈できる拡張子だとPHPが実行されてその結果が表示されてしまう。

> B include(/home/htdocs/my_function.php);←サーバのパス
これは途中に何も介さず、PHP自身がファイルをそのまま取り込んでいる。
だから何も内容は変化せず、ファイルの内容がそのまま取得される。

通常のPHPの処理としてはBなわけだが、Aみたいに「ネット越し」でファイルを得ようとすると、
何を経由してるかによって結果が変化してしまう場合があるというわけ。
0862nobodyさん2006/07/20(木) 23:13:50ID:???
>>860
どう試して上手くいかなかったのかkwsk
(ソース貼れ)
0863nobodyさん2006/07/20(木) 23:14:36ID:???
>>860
mb_eregでもmb_strposでもどっちでもできると思うんだが。
mb_eregで一体どういう書き方をしたんだ。
0864nobodyさん2006/07/20(木) 23:16:50ID:???
>>860
件数が少なくて、検索する文字列の内容が分かってるならループも要らんだろう。
0865nobodyさん2006/07/20(木) 23:53:54ID:???
>>860
if(($str=="田中"||$str="yamada")){
    処理;
}
0866nobodyさん2006/07/21(金) 04:14:32ID:???
>>857
意味不明
0867nobodyさん2006/07/21(金) 06:59:55ID:???
>>866
ただの知ったかぶりさね
0868nobodyさん2006/07/21(金) 07:31:02ID:???
>>853
ローカルで表示させるなら
http://localhost/my_function.php
0869nobodyさん2006/07/21(金) 07:49:38ID:???
>>868
表示してどーすんだ
0870nobodyさん2006/07/21(金) 08:29:07ID:iPhYBOeT
php超初心者で勉強を始めたばかりのものですが、phpコマンドにzlibモジュールを追加
する時に、libexpatというライブラリが必要と本に書いてあったのですが、そのrpmパッケージが
どこで入手できるのかわかりません。
大変申し訳ありませんが、ご存知の方がいらっしゃいましたら教えていただけないしょうか?

開発環境はwindowsではなく、RedHatLinux9です。

aptコマンドを使えるようにして、検索をかけてみたのですが全くヒットしません orz
0871nobodyさん2006/07/21(金) 08:36:14ID:???
ttp://rpm.pbone.net/index.php3

ここで探してみれば?
0872nobodyさん2006/07/21(金) 08:47:09ID:???
>>870
そんなんいるっけ?何て本?
0873nobodyさん2006/07/21(金) 08:52:48ID:iPhYBOeT
>872さん

PHP×PostgreSQLでつくる最強webシステムという本で、その本の340ページに書いてあります

0874nobodyさん2006/07/21(金) 09:04:48ID:???
>>873
2002年の本か…もう情報が古いよーな気がするが。
0875nobodyさん2006/07/21(金) 09:05:58ID:iPhYBOeT
>874さん

たしかに。。。phpのバージョンが4の時の話なので。。。。

パッケージ自体がもうリリースされていないんでしょうか
0876nobodyさん2006/07/21(金) 09:10:02ID:???
っていうか、XSLを使うわけじゃなかったらexpatなんて要らないと思うんだけど。
0877nobodyさん2006/07/21(金) 09:18:41ID:iPhYBOeT
>876さん

なんだか、Authクラスを使うには必要っぽいような書き方されてるんですよねぇ
0878nobodyさん2006/07/21(金) 09:30:43ID:???
くだる話はやめてください
0879nobodyさん2006/07/21(金) 09:37:00ID:???
>>877
とりあえずその本は捨てちゃえば?
0880nobodyさん2006/07/21(金) 10:06:48ID:5NMNDw00
>861
ありがとうございます。凄くわかりやすいです。助かりました。
質問ばかりで申し訳ないのですが、
インクルードしたいファイルが同一サーバではない場合(サーバのパスを指定できない場合)はどのようにしたらいいでしょうか?
前述のように拡張子をphp以外のもの(webサーバを経由しても内容が変化しないもの)にするのが一般的でしょうか?
08818602006/07/21(金) 11:30:17ID:???
mb_ereg_match使ってました
で、やっぱりマッチしない
mb_eregならマッチしてました

mb_regex_encoding('sjis');
$str = "こんにちは山田太郎です";
$pattern = "(山田|田中)";

if (mb_ereg($pattern, $str)) echo "mb_eregマッチしました";
else if (mb_ereg_match($pattern, $str)) echo "mb_ereg_matchマッチしました";
else echo "no match";
08828602006/07/21(金) 11:32:37ID:???

すいません
テストコード整形したので分岐がおかしい
両方チェックするようにしてもmb_ereg_matchはマッチしない
PHP4.3系
0883nobodyさん2006/07/21(金) 11:39:59ID:???
他サーバのphpファイルをincludeってことは
allow_url_fopenが有効ってことか、
他サーバのソースをそのまま実行するってのは、
きもちわるく思ってしまう
最も、他サーバが信頼できるサーバであるなら
そういう機能は積極的に使うのが賢いのだと思いつつ
ここぞという使いどころにめぐり合っていない
allow_url_fopen のステキな使い方ないかな?
0884nobodyさん2006/07/21(金) 11:44:06ID:???
>>880
まー、拡張子を変えちゃうか、あるいは.htaccessで拡張子に対するApacheの扱いを変えちゃうか、
あるいはラッパーのプログラムを経由してファイル内容をreadfile()とかで垂れ流させるか、ってとこじゃない?
0885nobodyさん2006/07/21(金) 14:41:49ID:???
フォームに入力された半角のバックスラッシュまたは円マークを
全角の¥に変換したいのですがうまくできません。
PHP Version 5.1.2です。

$a = "\2,000";
//$a = mb_ereg_replace("\","¥", $a); //エラー
//$a = mb_ereg_replace('\',"¥", $a); //エラー
//$a = mb_ereg_replace("\\","¥", $a); // ワーニング変換できず
//$a = mb_ereg_replace('\\',"¥", $a); // ワーニング変換できず

こんな感じです…。何かうまいやり方がないでしょうか?
0886nobodyさん2006/07/21(金) 14:45:03ID:???
str_replace
0887nobodyさん2006/07/21(金) 15:14:02ID:???
>>886
おおおおお・・・・・・・・
すんなりできました。この辺の似た機能だけど違う関数を
勉強しないとダメですね。886さんありがとうございました。助かりました。
0888nobodyさん2006/07/21(金) 15:15:36ID:???
覚えたての正規表現ってのはなぜかかっこつけて使いたがるからね。
str_replace は天才
0889nobodyさん2006/07/21(金) 16:28:20ID:???
>>887
文字コードがシフトジスだとstr_replaceじゃ駄目だけどね
0890nobodyさん2006/07/21(金) 16:51:58ID:???
マニュアルに内部コードとしてsjis使うのは薦めないってちゃんと書いてあるんだから、
おとなしくUTF-8でも使ってろってもんだ。
0891nobodyさん2006/07/21(金) 17:43:50ID:5NMNDw00
mysqlに接続するために必要な、DBの名前とかURL、パスワード、ユーザー名を
config.phpというファイルに書いて、必要なときにincludeしているのですが、
スクリプト中にパスワードとかを直接記述しているのは、やっぱりセキュリティー的に危険なのでしょうか?
また、こういう場合は一般的にどうやって対処しているのでしょうか?
0892nobodyさん2006/07/21(金) 17:46:37ID:???
>>891
その、config.php がドキュメントルートの下にないのなら、別に問題ない
0893nobodyさん2006/07/21(金) 17:48:01ID:???
>>891
Zend Guard
0894nobodyさん2006/07/21(金) 17:48:14ID:???
Perlの時は、Qとか駆使してSJISで書いてたな。
0895nobodyさん2006/07/21(金) 18:00:02ID:???
http://www.example.com/から、
http://hogehoge.com/へのリンクが貼られているかどうか
調べたいのですが、どうすれば良いのでしょうか?
ちなみに、http://www.example.com/は自分のサイトではないこと前提とします。
0896nobodyさん2006/07/21(金) 18:11:32ID:???
www.example.comから飛んできた人のリファラーをチェックすればいい
0897nobodyさん2006/07/21(金) 18:12:48ID:???
>>895
能動的にはwww.example.comを走査してリンクを探す。
受動的にはhogehoge.comにアクセス解析を設置してリファラを見る。
0898nobodyさん2006/07/21(金) 18:14:46ID:b+2L373x
名前の入力フォームでテキストに入力された漢字をもう一つのテキストにphpで
カタカナに変換するにはどうしたら良いでしょうか?ご教授お願いします
0899nobodyさん2006/07/21(金) 18:23:35ID:???
>>897
能動的にリンクを探したいのですが、
何か他のサイトを読み込む方法などあるのでしょうか?
0900nobodyさん2006/07/21(金) 18:36:31ID:???
>>899
ttp://www.mukom.netfirms.com/scripts/linkman.php
参考になるかもね
0901nobodyさん2006/07/21(金) 18:38:32ID:???
mb_send_mail()でメールを送信しました。
From:test@example.comで

From 【test@example.com (test@example.com)】

となるのですが、このFromに名前をつけれないのでしょうか?

たとえば
From 【EXAMPLEからメールです。 (test@example.com)】

このような感じでしたいのですが、どうすれば良いのでしょう。
どなたか教えていただけませんか?
0902nobodyさん2006/07/21(金) 18:42:33ID:???
>>901
additional_headers に所望の From ヘッダを挿入
http://jp.php.net/manual/ja/function.mb-send-mail.php
mime_encode とか忘れずに。アドレスを囲むのは <> で。
0903nobodyさん2006/07/21(金) 18:46:14ID:???
>>902
有難う御座います。
タイトル(?)の部分が文字化けしてしまったのですが、
mime_encodeというのは何でしょうか?
ググってみたのですが、それらしいサイトが見当たらなくて
0904nobodyさん2006/07/21(金) 18:47:58ID:???
>>903
3分ググっただけかよ と。
0905nobodyさん2006/07/21(金) 18:49:09ID:???
>>903
http://www.google.com/search?hl=ja&q=mime_encode&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=
それらしいサイトだらけに見えるんだけどー
0906nobodyさん2006/07/21(金) 18:49:17ID:???
>>903
最近 mime_encode せずにメールのヘッダ部分が化けるって質問多いな。
なんだかなぁ。
0907nobodyさん2006/07/21(金) 18:50:01ID:???
mb_encode_mimeheaderですね。
今見つけました。
0908nobodyさん2006/07/21(金) 19:01:03ID:???
SMTPサーバーを立ち上げたいのですが、
何か参考になるサイトがあれば教えてください。
0909nobodyさん2006/07/21(金) 19:15:24ID:???
PHPでSMTPサーバを書くっていうことか?
0910nobodyさん2006/07/21(金) 19:15:44ID:???
>>909
いや、自分のローカルサーバーでメールが送信できるようにしたいんです
0911nobodyさん2006/07/21(金) 19:18:24ID:???
それ、phpの質問?
0912nobodyさん2006/07/21(金) 19:21:06ID:???
>>911
すみませ4ん、どこで質問していいのか
0913nobodyさん2006/07/21(金) 19:21:24ID:???
>>908
>>634 だろ?
こんなところで聞かないと駄目なようなら SMTP サーバなんて立ち上げるな。
0914nobodyさん2006/07/21(金) 19:27:27ID:???
>>913
すみませんが別人です。
0915nobodyさん2006/07/21(金) 19:31:58ID:???
>>914
どっちでもいい。立ち上げるな。
0916nobodyさん2006/07/21(金) 19:32:25ID:???
>>915
立ち上げてはいけないのですか・・・。


・・・あれ?
0917nobodyさん2006/07/21(金) 20:11:14ID:???
PHPってサーバーにウプしたらソースがばれますか?
0918nobodyさん2006/07/21(金) 20:19:23ID:???
サーバの設定による
09199172006/07/21(金) 20:28:16ID:???
>>918
必死につくったのがバレるのはいやだなとおもったんですが、
サーバーにどんな設定をすれば盗まれないのでしょうか?
0920nobodyさん2006/07/21(金) 20:40:06ID:???
>>919
ロジックを記述した部分をドキュメントルートの下に置かなければ
よほどのことがない限り、ソースは流出しないよ
0921nobodyさん2006/07/21(金) 20:47:25ID:???
>>920

ありがとうございます。ちょっと勉強してみます。
0922nobodyさん2006/07/21(金) 21:22:58ID:5NMNDw00
>892
>みなさん

パスワードなどが書かれたファイルを、ドキュメントルートより下にしか置けない場合、対処法はありますか?

そもそも、ドキュメントルート以下に置いたPHPファイルの中身を見るのは、結構簡単なのでしょうか?
0923nobodyさん2006/07/21(金) 21:23:48ID:???
その程度の知識で作ったコードなんて、誰も見たいとは思わんだろう
参考になるコードなら、山ほど公開されてるしな
0924nobodyさん2006/07/21(金) 22:01:11ID:???
ajax の使いやすいグラフィックライブラリってありますか?
09259242006/07/21(金) 22:02:12ID:???
↓こういうのが出来るやつ
http://www.nextapp.com/platform/echo2/echo/demo/
0926nobodyさん2006/07/21(金) 22:34:26ID:???
system()を利用してシェルをコマンドを送った場合に、
ブラウザを閉じたり、セッションが終了すると
勝手に送ったジョブが終了してしまいます。

ブラウザを閉じたりしても、
ジョブが残るにはどうすればいいんでしょ??

環境は
FedoraCore 5
PHP 5
Apache 2
です。
0927nobodyさん2006/07/21(金) 22:46:08ID:???
>>898
漢字の正確な読みなんて人間にだって分からないんだからプログラムじゃ不可能
0928nobodyさん2006/07/21(金) 22:46:38ID:???
>>924
PHPじゃないだろそれ
0929nobodyさん2006/07/21(金) 22:49:37ID:???
>>922
拡張子またはパーミッションの変更、あるいは特定のディレクトリに入れた上で
そのディレクトリに対して全IP制限やBASIC認証を施すなど。
0930nobodyさん2006/07/21(金) 23:40:53ID:???
header('Content-type: application/xml; charset=utf-8');

$rdfData = simplexml_load_file('new.rdf');
$rdfData->channel->items->Seq->addChild('li', 'testurl', 'rdf');
echo $rdfData->asXML();

このコード実行するとApacheが死ぬんだが・・・・・
0931nobodyさん2006/07/22(土) 00:02:32ID:???
>>930
サーバモジュールとしてPHPを入れてるなら、
PHPとサーバ(Apache)は一連托生。
PHPが落ちるような時にはApacheも引きずられる。
0932nobodyさん2006/07/22(土) 11:39:11ID:6iz1vYAq
カウンタを作るためテキストファイルの読み書きをしているのですが、ごくたまにファイル内容が壊れてしまうときがあり悩んでおります。
コードは
$fp = fopen($count_file,'r+');
if (flock($fp, LOCK_EX)){
$count = trim(fgets($fp));
if (empty($count)) $count = 0;
$count++;
ftruncate($fp, 0);
fseek($fp, 0);
fputs($fp, $count);
}
fclose($fp);

flockでロックしてるので、ftruncateでファイル内容をクリアしても他から妨害されないと思ってるのですが…
お知恵をいただきたく。
0933nobodyさん2006/07/22(土) 12:30:20ID:???
>>932
俺は書き込んでから丸める主義
fputs($fp, $count);
ftruncate($fp, ftell($fp));
ファイルが空になる瞬間がないと思ってるんだけど
0934nobodyさん2006/07/22(土) 12:42:04ID:QMrS4QvA
URLを指定してtitleを取得したいんですけど、
良い方法ありませんか?

XMLパーサーでなんとか、文字列にして無理やり、正規表現でなんとか、
頭の悪い私にはどれも難しくて、スマートな方法はありませんか?
お願いします。

0935nobodyさん2006/07/22(土) 12:46:35ID:???
>>934 手動でやれば。
0936nobodyさん2006/07/22(土) 12:51:37ID:???
>>934
file_get_contents ()で開き、正規表現でマッチさせればいいやん。
09379342006/07/22(土) 13:05:30ID:QMrS4QvA
preg_split ですよね?
たぶん正規表現の書き方がおかしくて、出来ませんでした。
正規表現、勉強してきます。
0938nobodyさん2006/07/22(土) 13:08:47ID:???
PHP4でこれを使ってftp_chmodを実現してるんですが、
指定ディレクトリ以下のファイル全てのパーミッションを変更、
またはワイルドカードでの指定を可能にすることはできないでしょうか?
あるディレクトリ内のファイルのパーミッションをphpからftp関数経由で
全て変更したいのですが、数が膨大なため、苦労しています。

<?php
if (!function_exists('ftp_chmod')) {
function ftp_chmod($ftp_stream, $mode, $filename)
{
return ftp_site($ftp_stream, sprintf('CHMOD %o %s', $mode, $filename));
}
}
?>
0939nobodyさん2006/07/22(土) 13:09:04ID:???
split?
0940nobodyさん2006/07/22(土) 13:10:43ID:6iz1vYAq
>>933
おお、なるほど!
参考にさせていただきます。
09419342006/07/22(土) 13:15:54ID:QMrS4QvA
matchですね、、、、、
splitでやってました。
それにしても正規表現、苦手ッス
0942nobodyさん2006/07/22(土) 13:17:48ID:???
>>938
普通に他のFTPクライアントがやってるように
一覧を取得して(必要なら再帰)、各々にchmodを掛ける。
0943nobodyさん2006/07/22(土) 13:36:41ID:???
while で配列の要素数だけ繰り返し、という場合、
$i = 0;
while($i < count($array)){

$i = $i + 1;
}

としてますがもっと簡単なコーディング教えてくださいませ
0944nobodyさん2006/07/22(土) 13:44:06ID:???
>>943
foreach($array as $value)

foreach($array as $key => $value)
0945nobodyさん2006/07/22(土) 14:16:42ID:wSNHExxb
ああああ
0946nobodyさん2006/07/22(土) 14:45:14ID:???
現在のURLを取得するにはどうすればいいですか?
0947nobodyさん2006/07/22(土) 14:55:26ID:???
$host = $SERVER['HTTP_HOST'];
$req_uri = $SERVER['REQUEST_URI'];
$scr_name = $SERVER['SCRIPT_NAME'];
$php_self = $SERVER['PHP_SELF'];

// 1
$url1 = $host . $req_uri;
// 2
$url2 = $host . $scr_name;
// 3
$url3 = $host . $php_selfi;

ケースバイケースで好きなのを選べ
0948nobodyさん2006/07/22(土) 15:00:05ID:???
>>947
ありがとうございます!
0949nobodyさん2006/07/22(土) 15:33:52ID:???
phpのPCREパターン修正子で
「デフォルトで、PCREは検索対象文字列を(実際には複数行からなる 場合でも)単一の行からなるとして処理します。 」
の'm (PCRE_MULTILINE)'の意味が分かりません。
0950nobodyさん2006/07/22(土) 15:40:13ID:kdb16aHf
漢字などの文字列を数字に変換するような関数ってないですか?
0951nobodyさん2006/07/22(土) 15:46:36ID:LAiwhQ0T
>>949
文字列の途中に改行コードがあっても、複数行とは認識しないってこと

"bar\nfoo\n"
こんな場合の文字列のこと
09529492006/07/22(土) 16:45:47ID:???
>>951
m有りでもmナシでも同じじゃないですか。
0953nobodyさん2006/07/22(土) 16:49:24ID:???
>>952
違う、mが付くと\nが末尾として扱われる
0954nobodyさん2006/07/22(土) 16:52:44ID:???
≪前の5件 |1| |2| |3| 次の5件 >>

こんな感じでページ送りしたいのですが、参考になるソースをおいてる
サイトありますか?
0955nobodyさん2006/07/22(土) 16:56:53ID:???
>>954
マルチは死ねばいいと思うよ
0956nobodyさん2006/07/22(土) 17:03:27ID:???
>>955

今生き返りました。教えてください。
0957nobodyさん2006/07/22(土) 17:05:03ID:???
その程度のアルゴリズムも考えられないならプログラム止めれば?
レス数が950を超えています。1000を超えると書き込みができなくなります。