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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/12/18(日) 10:10:12ID:???
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
過去スレは>>2
0074nobodyさん2005/12/19(月) 12:53:26ID:???
>>71
XML_Parserが入って無いんジャマイカ?
0075nobodyさん2005/12/19(月) 13:24:38ID:pcyIPGNx
メールの送信について質問なのですが、
$header = "Content-Type: text/plain; charset=iso-2022-jp\nFrom:送信者\<[email protected]\>";
mb_language("Japanese");
if(mb_send_mail($mail,$subject,$message,$header)){
var_dump($header);
}
でのvar_dumpの結果で、Content-Type: text/plain; charset=iso-2022-jp From:送信者\
というふうに、<[email protected]\>の部分が消えてしまい正しく送信されません。
どこを修正すればよいのでしょうか。
0076nobodyさん2005/12/19(月) 13:40:36ID:???
とりあえず突っ込みどころが多すぎる点は置いておいて・・・

ブラウザで「<〜>」がタグとして解釈されて表示上消えているだけ
という単純な問題である悪寒
0077nobodyさん2005/12/19(月) 13:44:14ID:iBVZGmYt
localhostから
hoge.comにあるDB接続用のfunctionで
hoge.com内にあるDBにアクセスし
結果だけをreturnでlocalhostに返したかったので
hoge.comのfunctionをlocalhostのPHPでinclude_onceしました
その後でDB接続用のfunctionを実行したところ
Call to undefined functionといわれてしまいました
(DB接続用のfunctionには問題はありませんでした)

以上のことからfunctionはlocal内に無いと動かないという事でしょうか?
もしくはPHPiniなどに設定が必要なのでしょうか??
0078nobodyさん2005/12/19(月) 13:46:22ID:iBVZGmYt
訂正
誤 hoge.comのfunctionをlocalhostのPHPでinclude_onceしました
正 hoge.comのfunctionが書かれたPHPファイルをlocalhostのPHPでinclude_onceしました
0079nobodyさん2005/12/19(月) 13:48:05ID:???
>>77
localのどこにあるファイルをincludeしようとしてるんだ?
それ次第だろ。ちゃんと、エラー表示するようにしてみたら?
0080nobodyさん2005/12/19(月) 13:58:24ID:???
hoge.comにあるスクリプトをincludeしようとしているんじゃないか?

>>77
hoge.comがphpをパースしていたら、渡されるのは当然実行結果だけなので
hoge.comにある関数は実行できません。
たとえphpをパースしなくても(スクリプトそのままを渡してくるなら)
localhost内で実行されるので意に沿う結果にはならないと思われ。
どっちにしてもhoge.com内のスクリプトにある関数をlocalhostで実行するのは
無理があると思うけど。
0081nobodyさん2005/12/19(月) 14:09:55ID:???
include_once('外部URL'); つーことなら、次のような動作になる。
1. include_onceで外部URLのファイルを取得しにいく (URL fopen wrapper)
2. hoge.comのweb鯖が処理をする。
 拡張子phpならhoge.comのPHPが処理して、実行後の結果(出力)をテキストとして返す。
 実行結果をファイルにして、それをlocalhostでincludeした時と同じ様に考えるとよい。
  ・phpファイルの内容がfunctionだったら関数定義だけなので、何も返さない。
  ・実行の結果が<?php 〜 ?> ってな内容(文字列)だったら、
   そのような内容のファイルをlocalhostでncludeした事と同じになる。(localhostのPHPが処理する)
3. 残りの処理を続行。
0082752005/12/19(月) 14:28:53ID:pcyIPGNx
>>76
その通りでした・・・。ありがとうございます。

なんとか送信まではできたのですが文字化けしてしまいます。

mb_language()
mb_send_mail($mail,$subject,$message,$header)

mb_language()
mb_send_mail($mail,mb_encode_mimeheader($subject,"ISO-2022-JP"),mb_encode_mimeheader($message,"ISO-2022-JP"),$header)

mb_language()
mb_send_mail($mail,mb_convert_encoding($subject,"SJIS"),mb_convert_encoding($message,"SJIS"),$header)

どれも文字化けしてしまいました。
マニュアル見ると1番最初のでいいような気がするのですが、よくわかりません。
どこが問題なのでしょうか。
0083nobodyさん2005/12/19(月) 14:35:30ID:???
>>82
PHPのバージョンによって、mb_send_mail周りにバグがあります。

http://ns1.php.gr.jp/pipermail/php-users/2005-November/028156.html

このスレッドあたりを参考に。
つーか、質問するときはバージョン書きましょう。
0084nobodyさん2005/12/19(月) 14:39:46ID:iBVZGmYt
>>79
hoge.comにあるファイルをincludeしました

>>80-81
やはり無理があるようですね…
別の方法を模索したいと思います
ありがとうございました
0085nobodyさん2005/12/19(月) 14:42:44ID:???
>>84
よくわからんが、そのlocalじゃないほう(hoge.comは存在するので)にある、
関数とかのファイルってローカルにもってこれないのか?
0086nobodyさん2005/12/19(月) 14:46:21ID:vPAKLJvF
<?php
$site='http://yahoo.co.jp/';
?>

<form method="post" name="test" action="<? echo $_SERVER[PHP_SELF]; ?>" >
<textarea name="text" cols=20 rows=20>
<?php
$page = file($site);
if($page=="") die("Connection Failed");
while (list($num, $line) = each($page)){
$line=htmlspecialchars($line);
echo "$line";
}
?>
</textarea>
この状態でテキストエリアにヤフーのソースが入力されるのですが
実際に表示したいサイトが私のIPからしか接続出来ない状態です。
※PHPをUPしているサーバは別なところにあります。
ですので$siteに本来接続したいURLを入れても弾かれてしまいます。

javascriptなども覗いてみたのですが解決策が見当たりません。
PHPでなんとかなりませんでしょうか?
0087nobodyさん2005/12/19(月) 14:49:27ID:???
>>85
DB周りのfunctionらしいよ。
0088nobodyさん2005/12/19(月) 14:54:16ID:???
>>86
理由があってIPアドレス制限をしてるのだから、それを回避できるようなものじゃまずいかと。
まぁそれは置いておいて、自宅鯖を建てるくらしか手は無いんじゃないかねぇ。
0089nobodyさん2005/12/19(月) 14:58:30ID:???
>>87
それがDBのあるところになきゃいけない理由がわからんのだが……
0090712005/12/19(月) 15:00:43ID:???
>>74
RSSとTreeの他にもParserが居るんですね!
どうもです!
0091nobodyさん2005/12/19(月) 15:06:27ID:???
>>86
>私のIPからしか接続出来ない状態

私の所にproxyを置く
0092nobodyさん2005/12/19(月) 15:09:07ID:???
>>89
localhostからの接続しか許可していないDBを他のサーバから使いたいのかもね。
DBと同じサーバのphpをincludeしたら使えるかもしれないと思ったんじゃないの
そんなことが出来たらセキュリティもクソもあったもんじゃないが。
0093nobodyさん2005/12/19(月) 15:11:01ID:???
>>92
なるほど。
0094nobodyさん2005/12/19(月) 15:37:17ID:iBVZGmYt
>>92-93
ご心配をお掛けしましたができるようになりました
ありがとうございます
結果としてincludeした時点でlocalファイルとして扱われており
動かなかったようです
なので、hoge.comにGETで渡して結果をechoで吐き出させ
それをfileでarrayにして満足な答えを得ることが出来ました
どうもお騒がせしました
0095nobodyさん2005/12/19(月) 15:43:28ID:???
>>94
別に心配なんざしちゃいないが、
もっと日本語も勉強した方がいいぞ。
で、あんたはhoge.comの持ち主なの?
0096nobodyさん2005/12/19(月) 15:50:16ID:???
>>95
hoge.com(仮名)のサーバーは持ち主です
(hoge.comのドメイン名は仮名なので持ち主ではありません)
0097nobodyさん2005/12/19(月) 15:51:29ID:???
>>96
だから、hoge.comは実在するドメインだから、使うなっていってんだよ。
example.comってのを使うの、そういうときは。
0098nobodyさん2005/12/19(月) 15:55:49ID:???
>>97
しらなかったとは言え、申し分けありませんでした
以後はexample.comを使用します
0099822005/12/19(月) 15:57:35ID:pcyIPGNx
>>83
大変参考になりました。
なんとか文字化けせずに送信する事ができました。

>質問するときはバージョン書きましょう。
以後気を付けます。

ありがとうございました。
0100nobodyさん2005/12/19(月) 16:21:49ID:???
>>97
example.comも実在するドメインなわけだが・・・
fooとかhogeっていえばそれが例えだっていうのは
ほとんど誰もがわかると思うが?
0101nobodyさん2005/12/19(月) 16:26:01ID:???
>>100
実在しないわけではないな、確かに。
例えとして使う場合には、example.comやexapm;e.netを使いましょうと
規定されているといえばいいのかな。
0102nobodyさん2005/12/19(月) 16:27:14ID:???
>>100
http://suika.fam.cx/~wakaba/documents/rfc-ja/rfc2606-ja.html
0103nobodyさん2005/12/19(月) 16:42:24ID:???
>>100
ちゃんと読めよ
http://example.com/
0104nobodyさん2005/12/19(月) 17:46:34ID:???
PHPからMySQLのINTデータに+1ずつ更新していきたいのですが、
SQL文の中で演算させることは可能でしょうか?

たとえば、こんな感じで
”UPDATE table_name SET hoge= +1 WHERE id=100;”

hogeを+1ずつさせていきたいと思ってます。


宜しくお願いします。
0105nobodyさん2005/12/19(月) 17:48:28ID:???
mysqlって hoge=hoge+1 ってできなかったっけ?ってDB板向けの話の気が。。
0106nobodyさん2005/12/19(月) 17:50:37ID:???
>>105
できる。
0107nobodyさん2005/12/19(月) 17:50:50ID:???
>>105
ありがとうございます。
それでいけましたm(_ _)mペコリ
0108nobodyさん2005/12/19(月) 18:33:07ID:???
[ a ] が文字列の先頭の場合だけTRUEにしたいのですが、
以下でやると両方でTRUEになってしまいます。
何がいけないのでしょうか?


$str_1 = "abc";
$str_2 = "def";

if(strpos("$str_1",a) == 0){
print "TRUE";
}

if(strpos("$str_2",a) == 0){
print "TRUE";
}
0109nobodyさん2005/12/19(月) 18:46:31ID:???
0と(aが見つからないときの)falseの区別がつかないから。
多分、==を===にするとうまくいく。

あと文字列なんだから'a'と書こうよ
0110nobodyさん2005/12/19(月) 19:10:40ID:???
>>109 ありがとうございます。
0111502005/12/19(月) 19:54:06ID:???
>>54
>>56
>>57
>>59

ありがとうございました。何となくわかりました。
011272005/12/19(月) 20:13:35ID:???
ウリの説明は全然分からなかったニダカ?
0113502005/12/19(月) 20:54:49ID:???
>>112

>>7

すみません ぬけてしまった・・・orz

ありがとうございます。
0114nobodyさん2005/12/19(月) 22:08:45ID:???
とあるオープンソースのコードを見ていたら $fuga = $hoge{0}; という記述を
初めて見たのですが{0}は、どういう意味ですか?

ただの間違いではないですよね?
0115nobodyさん2005/12/19(月) 22:17:37ID:???
ん?それってPHPの話なの?
0116nobodyさん2005/12/19(月) 22:21:18ID:???
スクリプト言語でオープンソースと断りを入れるのには恐れ入りました。
0117nobodyさん2005/12/19(月) 22:22:44ID:???
文字列への文字単位のアクセス

波括弧の後に任意の文字をゼロから始まるオフセットで指定することにより、
文字列内の文字にアクセスすることが可能です。
注意: 過去の互換性のため、配列括弧を使用することが可能です。
しかし、 この構文はPHP 4に依存しています。

つーことらしい。
0118nobodyさん2005/12/19(月) 22:40:45ID:???
>>117
文の意味がわからないですが、サンスコ

>>116
暗号化とかエンコードできなかったっけ?

ちなみに、moodle/lib/html2text.phpの38行目あたり

$len = strlen($badStr); // Moodle
$chr = $badStr{0}; // Moodle
$goodStr = ''; // Moodle

で、Notice吐くんですよね
Uninitialized string offset: 0 in fileって。

先に $badStr =''; しておけば大丈夫ですか?
0119nobodyさん2005/12/19(月) 22:46:41ID:???
$a = 'abc';
$b = $a{0}; // $b = 'a' = $a[0]
0120nobodyさん2005/12/19(月) 22:57:17ID:???
>>116
オープンソースのオープンは
公開とか公知の意味合い。
0121nobodyさん2005/12/19(月) 23:27:40ID:???
>>120
ソースコードを可読できるって意味では?
0122nobodyさん2005/12/19(月) 23:59:03ID:???
質問です。
みなさん、コード書いてて煮詰まってしまったらどんなことをしますか?
0123nobodyさん2005/12/20(火) 00:03:01ID:???
寝る、お茶を飲む、トイレに篭る、風呂に入る…
0124nobodyさん2005/12/20(火) 00:04:50ID:???
あ、そうそう煙草は止めた方が良い、一酸化炭素の影響で脳みそさらに回らなくなる。
0125nobodyさん2005/12/20(火) 00:09:13ID:???
>>122
自ら答えを出しているのでは?

「2ちゃんにカキコする」
0126nobodyさん2005/12/20(火) 02:19:09ID:???
>>122
熱い茶を一杯 -> 風呂 -> 仮眠 -> 知人に相談 -> 断念して別の方法を模索
0127nobodyさん2005/12/20(火) 02:35:30ID:???
>>122
他のプログラムを書く。
0128nobodyさん2005/12/20(火) 11:14:59ID:bFU5ghZ7
おなぬ
タバコ以上に頭が回らなくなるw
0129nobodyさん2005/12/20(火) 11:34:40ID:2GuOb5lJ
$lines = file( $filename );
をソートする方法を教えてください
0130nobodyさん2005/12/20(火) 11:37:00ID:???
ttp://jp2.php.net/manual/ja/ref.array.php
配列をソートする関数が幾つかあるから、好きなやつを使って。
0131nobodyさん2005/12/20(火) 11:45:37ID:2GuOb5lJ
>>130
ありがとうございます。
$linesに「名前,個数」って入っていてこの個数でソートしたいんですが
教えて頂いたとこでみてみます
0132nobodyさん2005/12/20(火) 12:00:12ID:2GuOb5lJ
関数1ちでは無理なんですかねこれは
$linesには以下のような感じ(名前,個数)で値が入っています
あああ,5
うううう2
いいいい,4

これをこんな感じで個数でソートしたいのですが・・

うううう2
いいいい,4
あああ,5

どういう関数の組み合わせでできますか
0133nobodyさん2005/12/20(火) 12:04:20ID:???
>>132
あー、 , 区切りでやるときはちょっとややこしい事をしなきゃいけない(関数一発では無理)。
, 区切りをexplodeするなり多次元の配列にしてから、array_multisort ってのが一番楽かな。
0134nobodyさん2005/12/20(火) 12:07:31ID:???
>>132
お前には無理
0135nobodyさん2005/12/20(火) 12:09:16ID:???
PHPのスクリプトってのはいろんな場所から読み込まれるのが前提だろ?
なのにスクリプトの中のファイル操作は読み込まれた場所からのパスじゃないと
アクセスできない。つまりスクリプトを置いた場所からではなくスクリプトが読み込まれる
場所からどうやったら目的のファイルにアクセスできるかを考えなくちゃならない。
これがPHPのファイル操作関連を複雑にしている諸悪の根源だと私は確信しているんですよ。
0136nobodyさん2005/12/20(火) 12:15:58ID:???
>>135
で?
0137nobodyさん2005/12/20(火) 12:22:51ID:???
>>135
すごい狂った人が来ましたね。
データファイルを置く場所に関して悪習慣ができているようなので直すことをお勧めする。
0138nobodyさん2005/12/20(火) 13:15:22ID:2GuOb5lJ
>>133
ありがとうございます。
listで二重ループで普通に個数を比較しての単純ソートをしてたんですが
これがどうも数が多くなると正常にいかなかったもので
0139nobodyさん2005/12/20(火) 15:07:53ID:qvzJW6a+
質問です!
<SPAN class="class">ここに文章
</SPAN>

上記のように途中で改行があるソースから文章を取り出したいのですが

$C = preg_match_all("%<SPAN class=\"class\">(.+?)\n</SPAN>%is", $A, $B);

と書いてもうまくできません。\r\nや\rにしたり、
実際に改行してみたんですがダメでした。どうしたらいいですか?
0140nobodyさん2005/12/20(火) 15:15:08ID:???
>>139
preg系のパターンは/で囲むんじゃないの?
01411392005/12/20(火) 15:26:33ID:qvzJW6a+
>>140
そうなんですか?改行のない場所ではうまく取れてますが。。
01421392005/12/20(火) 15:34:15ID:???
あああ、ごめんなさいごめんなさい。
全然違う所($Aのところ)でミスしてました。お騒がせしました。
0143nobodyさん2005/12/20(火) 15:55:17ID:???
>>140
英数\以外なら何でもいいよ
括弧系は対応する括弧で閉じる
0144nobodyさん2005/12/20(火) 16:38:59ID:???
htmlで出力するとき、改行コードを\nにしてるんだけど、ソースを見ると\r\nになっちゃうのは仕様ですか?
0145nobodyさん2005/12/20(火) 16:53:05ID:???
>>144
んなことは無いんじゃないかなぁ。
間に変なフィルターが入らないように、proxyを使わずにtelnetで確認してみたらどうかな?
0146nobodyさん2005/12/20(火) 16:57:59ID:???
>>145
すまん、PHPじゃなくて、Perlでの話だった。
単純に誤爆してた、スマソorz
0147nobodyさん2005/12/20(火) 17:16:42ID:???
>>144
Windows鯖でテキストモードだから
>>146
BINMODE FH
0148nobodyさん2005/12/20(火) 17:40:34ID:???
外部ファイルを取得して保存する要領で外部の画像を保存することはできますか?
0149nobodyさん2005/12/20(火) 17:41:44ID:???
PHPでそれまでに出力された内容(ブラウザから見たソース)を取得する関数ってないですか?
0150502005/12/20(火) 17:45:22ID:???
>>149
echo
0151nobodyさん2005/12/20(火) 17:47:58ID:???
名前は誤爆誤爆誤爆
0152nobodyさん2005/12/20(火) 18:30:08ID:???
XXXXserAAAAAAA;XXXXX

でAAAAAAAの部分を取得したいのですが、簡単な方法はありませんか?
Xは不特定、serと;は固定です。
0153nobodyさん2005/12/20(火) 18:34:09ID:???
>>152
なんかデジャブだし……
0154nobodyさん2005/12/20(火) 18:39:24ID:???
>>149
そうではなくて、例としては以下のような感じです。
――――――
<?php
$a="あいう";
echo $a;
?> えお
<?php
$X=出力取得関数();
?>
――――――
で$Xに"あいうえお"が入ってくれればいいんですが。
01551522005/12/20(火) 18:40:56ID:???
AAAAAAAの部分も不特定です。
i-modeの端末情報です。
0156nobodyさん2005/12/20(火) 18:47:01ID:???
>>154
http://jp2.php.net/manual/ja/ref.outcontrol.php
これを利用すると似たようなことできない?
0157nobodyさん2005/12/20(火) 18:48:25ID:???
>>155
933 名前:nobodyさん:2005/12/17(土) 01:04:26 ID:???
preg_match('/hoge(.*)hage/', $str, $pattern);
$result = $pattern[1];

01581542005/12/20(火) 18:54:35ID:???
>>156
ありがとうございます。ちらっと見た感じ、これでいけそうなんでこれを参考にして色々やってみます。
01591552005/12/20(火) 19:01:46ID:???
>>157
できましたー!どうもです。
0160nobodyさん2005/12/20(火) 19:37:05ID:???
画像のサイズを取得する関数を教えてください
0161nobodyさん2005/12/20(火) 19:50:28ID:???
>>160
ttp://www.php.net/manual/ja/ に行き、search for にキーワードを入力する。
今回は画像だから image あたりが良かろう。
で、検索すると、、、いかんな・・ダイレクトにヒットしてしまった・・
まぁいいか、、、イメージ関数つー関数群があることが分かる。
その中を見ていくと、画像のサイズに関係する関数が見つかるだろう。

さらに image size と2つのキーワード(or 検索)で探してみると、
いかにもそれっぽい関数が列挙される。
0162nobodyさん2005/12/20(火) 20:07:07ID:???
>>148
$fp = fopen("save_filename", "w");
fwrite($fp, file_get_contents("ext_filename"));
fclose($fp);
01631622005/12/20(火) 20:09:02ID:???
こっちの方が単純か。
file_put_contents("save_filename", file_get_contents("ext_filename"));
0164nobodyさん2005/12/20(火) 21:19:34ID:???
>>161
ただの誘導に10行もかけて勿体つけて書くなよキモいなお前
01651482005/12/20(火) 22:18:27ID:???
>>162-163
できました!!ありがとうございました!
0166nobodyさん2005/12/21(水) 09:23:55ID:???
はじめて行読み込みをしようと思ったのですが以下の物だと行が無くてもbreak;しません。
私は何か思いっきり勘違いしているのでしょうか?。

if (is_readable($file)){
$fp = fopen($file,'r');
for($i=0;$i<10;$i++){
if (!feof($fp)) break;
echo fgets($fp);;
}
fclose ($fp);
}
0167nobodyさん2005/12/21(水) 09:33:10ID:???
>>166
それだと行があったらbreak
0168nobodyさん2005/12/21(水) 09:35:36ID:???
>>166
> if (!feof($fp)) break;
ここ

つ ttp://jp2.php.net/manual/ja/function.fgets.php
マニュアルにそのものずばりの例がある。
まずはマニュアルを確認することをお勧めする。
0169nobodyさん2005/12/21(水) 09:52:00ID:???
>>167-168

feof()
ファイルポインタがEOFに達しているかまたはエラーの場合にTRUE 、 その他の場合にFALSEを返します。
だった(・・;。手っきり反対の動作をするのかと思い込んでいました。

ありがとうございます。
0170nobodyさん2005/12/21(水) 10:28:15ID:???
while(!feof($fp))
は無限ループに注意
0171nobodyさん2005/12/21(水) 12:39:22ID:RHXLhrgR
htmlspecialchars()でENT_QUOTESが、デフォルトでなく
オプション扱いになっている理由って、何が考えられますかね?
0172nobodyさん2005/12/21(水) 12:55:23ID:???
>>171
PHP/FI Version 2.0の同名の関数が<>&"しか対応してなったから後方互換性のためだと思われる
PHP/FIが ' に対応しなかった理由は知らない
0173nobodyさん2005/12/21(水) 13:02:28ID:RHXLhrgR
>>171
なるほど、歴史的な理由である可能性が高いですか。
デフォルトでついてた方が楽なんだけどな〜。
これ、ただでさえ関数名長いから、めんどくさいですね。
0174nobodyさん2005/12/21(水) 13:09:37ID:???
>>173
ENT_QUOTESをいれた形でユーザー関数にしておけばいいだけでは?
■ このスレッドは過去ログ倉庫に格納されています