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

【PHP】質問スレッドpart31【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/11/27(日) 00:07:12ID:eBvjdczp
PHP全般の質問スレです。
【基本ルール】
・新規質問の方は上げてください。age進行でお願いします。
・質問者は2回目以降、最初のレス番号を名前欄に入れてください。
・回答者は質問者に対して>>(アンカー)をつけてください。
・煽り・荒らしは放置。荒らしに反応した香具師も荒(ry
・解決しなくてもこたえてもらったら礼を。
【質問テンプレ】
・マニュアルを調べたか、google検索したか(調べたキーワード)
・タイトル(禁:教えてください!etc) 例:requireとinclude
・内容 例:requireとincludeはどう違うのですか?
・質問する際には環境も明記。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
【PHP マニュアル】
http://www.php.net/manual/ja/
※マニュアル上部の「search for」から検索を活用すべし(便利)。

過去スレ、関連リンク、FAQ等>>2-10辺り
0151nobodyさん2005/12/01(木) 17:12:53ID:???
>>150
あっ、mb_ereg_replaceな
0152nobodyさん2005/12/01(木) 17:18:48ID:???
まあstr_replaceかな
0153nobodyさん2005/12/01(木) 17:24:25ID:???
>>148
つ[マルチバイト関数]
01541452005/12/01(木) 18:44:46ID:???
<?php
$newfile = "somefile.html";
$ddr = file_get_contents($newfile);
$adr = mb_ereg_replace("秋", "冬", $ddr);
file_put_contents($newfile, $adr);
?>
strtr,str_replace,も試してみたのですが、
英語⇔英語は置き換えできても、
日本語⇔英語、日本語⇔日本語はできませんでした。
環境からまた見直してみます。皆さんありがとうございました。
0155nobodyさん2005/12/01(木) 18:48:33ID:???
>>154
mb関係の設定はどうなっているんだ?
サーバーの文字コードとファイルの文字コードとかは?
01561452005/12/01(木) 19:05:41ID:???
>>155
文字コードでできました!
EUC-JPで保存してたつもりがUTF-8でした・・・
超凡ミス・・・・
皆さんのおかげでできました!本当にありがとうございました!
0157nobodyさん2005/12/01(木) 19:27:18ID:???
>>154
一応排他処理しないと
0158nobodyさん2005/12/01(木) 19:58:27ID:???
file_put_contentsって5からだったと思うから使う環境の事も考えないとダメだよ
0159nobodyさん2005/12/01(木) 20:10:02ID:mUwPwikL
CURL関数を使いたいのですが、上手くいきません。

$host = "http://www.hogehoge.com";
$ch = curl_init( $host );

curl_setopt( $ch, CURLOPT_HEADER, 1 );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 0 );
curl_setopt( $ch, CURLOPT_FAILONERROR, 1 );
curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $this->m_timout );
curl_setopt( $ch, CURLOPT_HTTPHEADER, $head );

$result = curl_exex($ch);
$err = curl_error($ch);

で、$resultには何も返ってきません。
$err には「Couldn't resolve host 'www.hogehoge.com''」 というメッセージが返ってきます。
しかし、コンソールで
curl -I http://www.hogehoge.com
を実行した場合には正常に名前解決もでき、正常な結果も返ってきます。

PHPのCURL関数を使用した場合だけ名前解決ができていないようなのですが、
どうすればいいのか途方にくれています。
よろしくお願いします。
0160nobodyさん2005/12/01(木) 20:12:28ID:???
追記です。

$this->m_timout の値は120を指定しています。
0161nobodyさん2005/12/01(木) 21:27:37ID:???
突然の質問ですいません。。。。
http://fooos.com/のようなメールのcgiを知りませんか?
0162nobodyさん2005/12/01(木) 21:46:55ID:cg4HP1lw
質問です
pyaというサイトをにもありますが、
良い 悪い を評価するボタンを設置するにはどうすればいいですか?
0163nobodyさん2005/12/01(木) 21:54:56ID:???
みんな、日本語は正しく使おうね。
01641622005/12/01(木) 22:01:12ID:???
>pyaというサイトをにもありますが、
正しくは
>pyaというサイトにもありますが、
でした。。
0165nobodyさん2005/12/01(木) 22:03:43ID:???
>>164
そういうスクリプトを探すなり、自分で書くなりすればいいだけですよ。
そのpyaとやらのサイトもそうやって作られたものです。
0166nobodyさん2005/12/02(金) 00:06:46ID:???
IPv6の設定がらみで取れんことがあったな...
PHPでcheckdnsrr()とかgethostbyname()で引いたときにIPが取れる?

01671662005/12/02(金) 00:07:26ID:???
>>159

0168nobodyさん2005/12/02(金) 04:43:38ID:FIP91xbi
xampp/windowsのphp5を、5.1.1にリプレースしたところ、
browscap.iniが読めないと言われました。
初耳だったので検索したところ、
ブラウザ情報の設定ファイルとのことなので、
http://jp.php.net/manual/ja/faq.obtaining.php#faq.obtaining.browscap
ここにかかれたURLからダウンロードして設置しましたが、
360行でパースエラーが出ます。
どうすれば解決できますか?
0169nobodyさん2005/12/02(金) 08:49:34ID:???
mailtoのアンカーを押すと同時に、
違うページに飛ぶには、
どうしたらよいでしょうか?
0170nobodyさん2005/12/02(金) 08:56:15ID:???
>>169
JavaScript を使うがいいさ
0171nobodyさん2005/12/02(金) 08:57:09ID:rQNTnY5j
>>168
エラーをコピペ汁!
漏れの所では問題ない。

>>169
ブラウザ依存。PHPでmailtoの挙動なんて指定できないよ。
01721692005/12/02(金) 08:57:48ID:???
>>170
ありがとうございます。

携帯電話でも、使えるようにしたいため、
Javascriptは使えません。

よろしくお願いします。
0173nobodyさん2005/12/02(金) 08:58:52ID:???
>>169
onclick('document.href=スレ違い')
0174nobodyさん2005/12/02(金) 09:04:47ID:???
>>172
メール送信フォームでも使っとけ。
嫌ならスレ違いだ、どっかいけ
01751692005/12/02(金) 09:27:40ID:???
>>173 >>174
ありがとうございます。
どうも、無理みたいですね。
0176nobodyさん2005/12/02(金) 09:44:04ID:???
mailtoじゃなくて普通のアンカーでページ飛んじゃだめなのか?
0177nobodyさん2005/12/02(金) 10:25:34ID:???
5.1.1出るの早過ぎw
0178nobodyさん2005/12/02(金) 10:32:29ID:???
>>169
そもそもボウヤは、「何を実現したいのか」を書いた方がいい。
0179nobodyさん2005/12/02(金) 10:38:11ID:???
>>178

夢を実現したいんです!!
0180nobodyさん2005/12/02(金) 10:39:20ID:???
>>179
それならスレ違い、いや板違いかw
01811692005/12/02(金) 11:35:20ID:???
メーラーにmailtoで、to と subjectを
送った時点で、
ありがとうございました。等を
表示させたいんです。
携帯電話で利用したいので、
Javascriptは使えないんです。
0182nobodyさん2005/12/02(金) 11:43:22ID:???
>>181
立ち上げたメーラーが、実際メールを送ったかどうかを判断できないのでそもそも仕様から不可能。
(メール送らずにメーラー閉じたりする場合もあるから)
0183nobodyさん2005/12/02(金) 11:44:11ID:???
>>181
俺の携帯はmailtoすると元のページにすら戻らないからどっちにしても関係ないや
01841692005/12/02(金) 11:45:10ID:???
>>182 さん
ありがとうございます。

ただ、そのリンクもしくはフォームをクリックした時点で、
切り替わってくれれば、問題ないのですが、
それも、不可能ですか?
0185nobodyさん2005/12/02(金) 11:48:25ID:???
>>181
JavaScript使えないんじゃ無理っぽいね。
つかmailto使わずに、自分でメール用のフォーム作ってPHP側でメール送信するようにすれば目的としていることはできると思うよ。
01861692005/12/02(金) 11:52:22ID:???
PHPで、sendmail等を使う場合、送信メールアドレスの
確認がとれないですよね。
0187nobodyさん2005/12/02(金) 11:56:20ID:???
掲示板にしておけ
0188nobodyさん2005/12/02(金) 12:01:52ID:???
そもそも、いったいなんのためにメールを使いたいのか。
なんか糞仕様を考えているような気がする。;
0189nobodyさん2005/12/02(金) 12:04:40ID:???
>>186
確認してどうすんの?
後々返信とかしたいなら、ユーザにメルアドを入力するかどうかを任意で選ばせるべきだと思うけど。
(返信されたくないユーザだっているでしょ)
メーラーを使わせる仕様にしたっていくらでも偽装できるしね。
01901692005/12/02(金) 12:10:14ID:???
いろいろご意見ありがとうございました。
違う方法で考えてみます。
0191nobodyさん2005/12/02(金) 18:35:21ID:???
phpじゃ無理だけど自前でsmtpで受けて表示するかだね。
そんな事するなら直接受け取れるフォームにするけど(w

エロサイトの課金チェックとかそういうのが遣りたいのかねえ?
0192nobodyさん2005/12/02(金) 19:02:39ID:???
>>190
サイトつくったらここで宣伝しろよ。
穴見つけにいくからw
0193nobodyさん2005/12/03(土) 19:43:03ID:???
>>192
index.php?cat=%5Cetc%5Cpasswd
とかできると便利だね。
0194nobodyさん2005/12/04(日) 08:33:32ID:???
PHP5 セッションについて質問

あるクラスが配列で別のクラスのインスタンスを複数持つような、
複雑な階層構造を持つクラスはセッションに保存できないんでしょうか?

具体的な症状としては、複雑な階層構造を持つクラスをserializeし、
後にunserializeするときに Node no longer exists という警告がでます
0195nobodyさん2005/12/04(日) 08:38:48ID:???
>>194
session_start()する前にクラス定義がないとだめだよ。
http://www.php.net/manual/ja/ref.session.php
0196nobodyさん2005/12/04(日) 12:30:55ID:???
>>195
ありがとうございます。ご助言を頼りに、なんとか無事にunserializeできました!

シリアライズされたデータをvar_dumpしたところ、
SimpleXML型のデータとしてシリアライズされていたということが分かりました。
(XMLから読み込んだユーザデータをシリアル化しようとしていた)
これを読み込み時にString型にキャストすることで無事事なきを得ました。
0197nobodyさん2005/12/04(日) 19:21:04ID:PbAtq7vQ
めっちゃ下がっとるやん
0198nobodyさん2005/12/04(日) 19:33:56ID:???
下でこそこそやるのが好きなんだよ…。
01991452005/12/04(日) 19:58:24ID:???
1 <html>
2 <head></head>
3 <body>
4 <p>あああああああああ
5 <p>いいいいいいいいい
6 <p>うううううううううううう
7 </body>
8 </html>

というファイルの、5行目から下(6,7,8,)を削除して
上書きさせたいのですがどうしたらよいでしょうか。
よろしくお願いし舞う
0200nobodyさん2005/12/04(日) 20:00:09ID:f2NWnh3L
名前が入ってしまいましたすいません
0201nobodyさん2005/12/04(日) 20:11:12ID:???
行という捉え方をしてる時点でもう負け組なわけよ。
単なる改行コードという、言い換えればaやbと同じような記号が入ってるだけなんよ。
そういう一つの長い文字列から特定部分を取り除こうとしたら、どうしたらいいと思う?
そう、改行コードを最初から数えていって、狙った個数になったところでチョン切って、
またまた削除したい分の改行コードの個数を数えて行ってチョン切って、
それを繋ぎあわせるつー事になるわけよ。

まぁ、改行コードの部分で自動的にぶった切ってくれる関数を使ってもいいけどな。
0202nobodyさん2005/12/04(日) 21:05:43ID:???
>201
お前www
思いっきり負け組みじゃんw
0203nobodyさん2005/12/04(日) 21:10:45ID:???
>>199
"5"行目まで残して、以下は削除、でいいんだな?

$path = "hoge.html";
$a = file($path);
$fp = fopen($path, "w");
foreach ($a as $line)
fprintf($fp, $line);
fclose($fp);
0204nobodyさん2005/12/04(日) 21:12:38ID:???
>>203
中途半端なまま送っちまった

$path = "hoge.html";
$a = array_slice(file($path), 0, 5);
$fp = fopen($path, "w");
foreach ($a as $line)
fprintf($fp, $line);
fclose($fp);
0205nobodyさん2005/12/04(日) 21:13:30ID:???
>>203
う〜む…
02062012005/12/04(日) 21:14:26ID:???
>204
行という捉え方をしてる時点でもう負け組なわけよ。
02071992005/12/04(日) 21:48:49ID:???
>>204
ありがとうございます!できました!
5行目以前を取得する、んですね。
5行目以降を削除する事だけしか考えてなかったので、
自分では絶対無理でした^^ほんとにありがとうございます
>>201
substr_count($htmlfile, "<p>") <= 2){
みたいな感じで部分を指定して取得してやるんでしょうか?
そっちのやり方も勉強してみます。もの凄くヒントになりました。
ありがとうございました
0208nobodyさん2005/12/04(日) 21:51:40ID:???
くだらねえ質問だな
0209nobodyさん2005/12/04(日) 22:05:51ID:???
私なら5行目までのファイルを別に作っておくけどな
0210nobodyさん2005/12/04(日) 22:06:40ID:???
ああ




0211nobodyさん2005/12/04(日) 22:08:04ID:???
6行ありますが?w
0212nobodyさん2005/12/04(日) 23:10:09ID:???
特定の情報で括って結果を出力する場合、URLが↓のようになりますが、

search.php?name=テスト

このようにURLに漢字が入るとブラウザによっては表示できませんよね?
getの時のようなURLにするにはどうすればいいのでしょうか?
0213nobodyさん2005/12/04(日) 23:12:53ID:???
スレ違い
0214nobodyさん2005/12/05(月) 00:10:36ID:???
>>212
>URLに漢字が入る
がオカシイ。まあ海外厨避けに生sjisで
ゴニョゴニョすることも無いわけではないが、
まともなやり方じゃないしね。
0215nobodyさん2005/12/05(月) 00:15:50ID:???
MySQLのFORMAT_DATE関数のように、特定フォーマットの日付を色々変換できる関数って存在しますか?
たとえば、 2005-12-15 -> December 15 とかに変更したいのです。
strtotime()で一旦タイムスタンプに戻して、date()でやっているのですが、他に方法あるでしょうか。
0216nobodyさん2005/12/05(月) 01:02:07ID:???
>>212
http://jp.php.net/manual/ja/function.urlencode.php
0217nobodyさん2005/12/05(月) 01:40:51ID:???
>search.php?name=テスト
>
>このようにURLに漢字が入ると

>search.php?name=テスト
>
>このようにURLに漢字が入ると

>search.php?name=テスト
>
>このようにURLに漢字が入ると

>search.php?name=テスト
>
>このようにURLに漢字が入ると

>search.php?name=テスト
>
>このようにURLに漢字が入ると

>search.php?name=テスト
>
>このようにURLに漢字が入ると

0218nobodyさん2005/12/05(月) 05:07:22ID:???
どうでもいいがコピペ長すぎ。せめて3つまでに汁。
0219nobodyさん2005/12/05(月) 09:34:45ID:???
>>215
ない
0220nobodyさん2005/12/05(月) 13:59:59ID:mqRTUQ8g
>>212はスレ違ってないだろ
urlencode()
0221nobodyさん2005/12/05(月) 14:04:55ID:???
よくみたら既出かorz
GETの時のようなというよりGETそのものなんだな。
0222nobodyさん2005/12/05(月) 17:33:48ID:???
「URLエンコード」って名称を知らないプログラマが多いようで、全く同じ質問が時々出るな
名称を知ってりゃ検索であっさり見つかるんだが・・・
FAQに加えないか?
0223nobodyさん2005/12/05(月) 17:58:56ID:zZ7taK0k
いいんじゃないの
本来はPHPと関係ないから他でやってほしいけどね
0224nobodyさん2005/12/05(月) 18:03:00ID:???
くだスレが適当です。ちびっこの諸君はくだスレで僕と握手!
0225nobodyさん2005/12/05(月) 18:22:55ID:???
俺は初めて見たけど。なんというかテンプレ文にし辛そうだな。
GETやPOSTで日本語を送信するには、とか?
0226nobodyさん2005/12/05(月) 20:28:59ID:???
??. "%xx%xx"形式に変換したい、URLに全角文字を含ませたい
 → urlencode()
でいいんじゃないの?
0227nobodyさん2005/12/05(月) 21:05:29ID:???
HTTPについての知識が無い
 →くだ質スレ
PHPのマニュアルを読んだことが無い
 →くだ質スレ
リア厨・リア高だ
 →くだ質スレ
ニートだ
 →くだ質スレ
0228nobodyさん2005/12/05(月) 21:06:39ID:???
>>227
 →くだ質スレ
0229nobodyさん2005/12/05(月) 21:58:13ID:???
>>227
HTTPがわからんのはWebprog初心者の質問が適当
0230nobodyさん2005/12/06(火) 14:32:19ID:???
>>229
ただ、初心者はどこで質問するのが適当かわからない。
0231nobodyさん2005/12/06(火) 15:22:41ID:???
排他制御で、ディレクトリをフラグとしてロックをかけようと思うのですが
15ページほどのサイトで全てのページに
同じディレクトリをフラグとしてロックをかけたら、
アクセスが増えるとすぐに破綻しますか?

どのページでも同じファイルにアクセスしているので
こういう事をしなければならなくなってしまったのですが。
0232nobodyさん2005/12/06(火) 16:22:55ID:???
>231
>1-5
>1-5
>1-5
>1-5
>1-5
>1-5
0233nobodyさん2005/12/06(火) 16:34:20ID:???
>>231
ディレクトリのはおすすめできない
0234nobodyさん2005/12/06(火) 16:58:36ID:???
>231
そうそう破綻しない。
いまのマシンはスペックが昔と段違いなので大丈夫。
心配しすぎです。
0235nobodyさん2005/12/06(火) 17:02:03ID:???
>>233
flockよりよくねーか?
0236nobodyさん2005/12/06(火) 17:02:41ID:???
どうしても心配なら rename を使った排他制御の手法の方が速いのでそちらを使うのがよい
0237nobodyさん2005/12/06(火) 17:20:18ID:???
ケントのスクリプトを改造マジオススメ!
0238nobodyさん2005/12/06(火) 18:28:29ID:???
すいません、質問です。

$numには数字が入ってるとして

$function = "f_$num";
$function($arg);

を1行で実行する事ってできませんか?
$functionの引数はいくつとるかわからないと仮定してます。
0239nobodyさん2005/12/06(火) 18:29:11ID:???
ちなみに

"f_$num"($arg);

はいけそうな気もしましたがパーサーエラーになりました。
0240nobodyさん2005/12/06(火) 18:39:46ID:???
参照返さなくていいなら出来るよ
0241nobodyさん2005/12/06(火) 18:40:38ID:???
教えてください
02422332005/12/06(火) 19:02:24ID:???
>>236
私も rename 推奨者です。
0243nobodyさん2005/12/06(火) 19:22:36ID:???
>>239
evalじゃなくて?
0244nobodyさん2005/12/06(火) 19:32:33ID:???
http://php.net/manual/ja/ref.funchand.php
0245nobodyさん2005/12/07(水) 00:55:03ID:???
プログラム中で終了しそうな場面って、
returnとexit()以外に何かありますか?
0246nobodyさん2005/12/07(水) 01:05:31ID:???
Fatal Errorを出すようなものも終了しちゃうね。requireとか。
質問の意図がよく分かんないけど、
想定していない場所で終了しちゃってその場所を特定したいしたいってことなら、
エラー処理や関数の返り値をチェックをきちんとしたり、デバッガーを通すとかしたほうがよいかと。
0247nobodyさん2005/12/07(水) 01:13:43ID:???
die
0248nobodyさん2005/12/07(水) 01:14:27ID:sd3DaoFD
`halt -p`
0249nobodyさん2005/12/07(水) 01:35:55ID:???
phpファイルのHTML記述部分に<? ... ?> と書きたい場合
どうすればいいんでしょうか。
0250nobodyさん2005/12/07(水) 01:37:33ID:???
>>249
xml宣言なら
<? echo "<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>" ?>
とか
■ このスレッドは過去ログ倉庫に格納されています