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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/09/17(日) 04:26:39ID:???
PHPに関するくだらねぇ質問用スレです。ここならお前の下らない質問に回答があるかも知れません。

まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
  (逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
  (荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
02202182006/09/21(木) 00:04:32ID:???
説明が足りなくてすみません。
目的としてはフォーム(form.html)からファイル名(file_name)とタイトル(title)
を入力して送信(write.php)したら、そのファイル名のファイルが出来上がる。
その出来上がったファイル内には、別ファイルの内容+指定箇所が
フォームで入力したタイトルに入れ替わっているというやつです。

別ファイルの内容を変数に代入するのは
$tmp_file="templete.php";
$array = file($tmp_file);
$templete = join("",$array);

で出来まして、その後に>>218のソースを追記したら
新規ファイル内にtemplete.phpの内容が書き込まれているのですが、
フォームで入力した「タイトル」は変わっていないのです。
なのでソースが違うのかな?っと思った次第です。
0221nobodyさん2006/09/21(木) 00:24:28ID:???
>>210
テンポラリファイルかDBにデータを保存してファイル名やIDをGETで渡すとか。
で、画像生成プログラムが画像生成完了後にそのデータを削除。
0222nobodyさん2006/09/21(木) 00:24:44ID:???
>>220
そもそも説明で言ってる事が分からないし、そんな物を何に使うのかも分からん
"form.html""write.php""template.php"のコードを出すか、「エスパー回答希望」と言ってくれ

まぁ、何か盛大に勘違いして妙な事やってるのだけは理解した。
0223nobodyさん2006/09/21(木) 00:28:43ID:???
>>220
最初からテンプレートと言ってくれればw
面倒だから色々汲み取った上でサンプル書いちゃうよ
--- template.php ---
<?php
$username = "%REPLACE_USERNAME%";
$password = "%REPLACE_PASSWORD%";
コード略
?>
--- writer.php ---
<?php
$replace_rule = array("%REPLACE_USERNAME%" => "218", "%REPLACE_PASSWORD%" => "1234");
$tmpl = file_get_contents("template.php");
$fp = fopen("result.php","w");
fputs($fp, strtr($tmpl, $replace_rule));
?>

>>221
削除するのは生成側じゃなくて表示側では
02242212006/09/21(木) 00:28:52ID:???
>>215-216
渡すデータが大きくなった場合にどうするかって話で何故GETが選択肢に入るの?
>>217
セッション使うと同じページを2枚とか3枚とか表示させたとき、
どのデータで画像を生成するのか判別するのが複雑にならない?
こういう場合ではデータIDをページ表示毎に生成した方が都合よさげな気が。
02252212006/09/21(木) 00:30:48ID:???
>>223
表示側=画像生成プログラム だと思うんだが違う?
<img src="画像生成プログラム?データ識別ID">
って形で呼び出されるもんだと思ってるんだけど。
0226nobodyさん2006/09/21(木) 00:36:19ID:???
>>225
ごめん、データ=画像データだと勘違いしてた
0227nobodyさん2006/09/21(木) 01:01:26ID:???
画像データをDBに入れる場合、わざわざBase64エンコードしなくても、
BLOB型のカラムにすればバイナリのまま入れられるでしょ。
0228nobodyさん2006/09/21(木) 01:34:59ID:k7zFBu8v
Formで、textareaの文章の先頭に改行を入れてPOSTすると、
なぜか勝手に改行コードが一つ削除されてしまいます。

具体的には、たとえば先頭に改行(エンターキー)3つ置き、
その後に文章が続くものをPOSTし、それを受け取って表示してみると
改行が2つに減っているのです。逆に文章の末尾にある改行コードは影響を受けません。

これはどうしてなのでしょうか?
ちなみに上記において、受け取ったPOSTデータは、変換やエスケープを一切せずに
表示しても、やはり先頭にある改行が一つ勝手に削除されてしまいます。

phpのバージョンは4.3.1です。
0229nobodyさん2006/09/21(木) 01:46:30ID:???
>>228
少なくとも4.4.1では再現しない。
0230nobodyさん2006/09/21(木) 01:48:32ID:???
>>228
4.3.1はハッキリ言って既に非常に古いからアップデートしたほうがいい
02312282006/09/21(木) 01:48:37ID:k7zFBu8v
追記ですが、いくつかの有名サイトでも>>228と全く同じ現象を確認できました。

たとえばmixiのプロフィール変更画面で、「自己紹介」の欄(textarea)にて
先頭部分でエンターキーを2回押して改行を2つ入れてから本文を書いたとします。

それで「変更ボタン」を押すと、当然プロフィールには、たった今POSTした内容(改行2つ+本文)が反映されています。
ところが、その状態で再度プロフィール変更画面に行ってみますと、
なぜか自己紹介欄textareaの改行が1つに減っています。そのまま何を手を加えずに「変更ボタン」を
押しますと、当然のことながらプロフィール画面に反映される先頭の改行は1つに減っています。

ここでまたプロフィール変更画面に行きますと、また改行が1つ減っています。
すなわち、こうやって繰り返していると、一番初めに入力したはずの改行は0になってしまうのです。


mixiでも発生する現象だということは、PHPの問題ではなく
HTMLの問題(仕様?)なのでしょうか・・・。
02322282006/09/21(木) 01:50:09ID:k7zFBu8v
>>229
>>231で書きましたように、mixiで再現できますので、お試しください。

>>230
Perlを使っているmixiでも再現できたので、PHPのバージョンの問題ではないと思われます。
0233nobodyさん2006/09/21(木) 01:50:30ID:???
ブラウザの問題かもよ。
02342282006/09/21(木) 01:52:15ID:k7zFBu8v
>>233
たしかにその可能性もありますね。
当方のブラウザはIEの最新版です。
0235nobodyさん2006/09/21(木) 02:03:59ID:???
>>231
あー、了解。mixiで再現できた。これはHTMLかブラウザの問題だね。
送信後のデータ受け取りじゃなく、ページの表示の時点で消えてる。

<textarea name=hoge>
<?php echo $hoge ?>
</textarea>
なら多分問題は出ないと思うよ。(最初から前後に改行を含めた書き方)
ところが
<textarea name=hoge><?php echo $hoge ?></textarea>
と書くと、$hogeの最初の改行をブラウザが無視してくれてる。

これってどっちの問題なんだろ…俺も後者の書き方がHTML的には正しいと思ってたんだが。
IEのこのHTML解釈って何かおかしくないか?
02362352006/09/21(木) 02:13:46ID:???
Firefox1.0.4でも同じ解釈になった。(最初の改行は無視)
ってことで<textarea>の直後は必ず改行が正しいことになってるのかも。

余談だが、Firefoxでは
<input type=hidden name=hoge value="
データ
">
みたいな改行を含むhiddenデータは前後の改行が除去されて送信されるw
おかげでmixi(確認/キャンセルのデータ受け渡しをセッションでなくhiddenで行っている)では
先頭1行どころか10行分だろうと先頭の空行が丸ごと無視されるという結果になった。
02372282006/09/21(木) 02:14:54ID:k7zFBu8v
>>235
たしかに前者の書き方ですと、>>231の問題は解決されますね。
ただその代わりに、今度は余計な改行が常に1つ、先頭に発生してしまいます。
(最初から改行を含めてるので当然ですが・・・)
たとえば前者の書き方をしておいて、textarea($hoge)が空の状態でマウスカーソルを置くと、
1行目が空行で、2行目からカーソルが始まってしまいます。
つまり1行目の改行が勝手に付いてしまっている状態ですので、今度はそれを消す手間が出てしまいます。


><textarea name=hoge><?php echo $hoge ?></textarea>
>と書くと、$hogeの最初の改行をブラウザが無視してくれてる。

そうですね。無視したあげく、再POSTの際には無かったことになっています。


>IEのこのHTML解釈って何かおかしくないか?

もしこれがIEだけでの現象だとしたら、
完全にIEの解釈がおかしいですよね。。。
02382282006/09/21(木) 02:24:28ID:k7zFBu8v
>>236
FireFoxでも同じ結果でしたか。。。
でも、
><textarea>の直後は必ず改行が正しいことになってるのかも。
・・・だとしたら、私が>>237で書きましたように、
空のtextareaには必ず先頭に空行が1つ出来てしまうわけで、
かなり気持ち悪いですよねぇ・・・。
02392352006/09/21(木) 02:25:24ID:???
>>237
> たとえば前者の書き方をしておいて、textarea($hoge)が空の状態でマウスカーソルを置くと、
> 1行目が空行で、2行目からカーソルが始まってしまいます。
ごめん。これはうちじゃ再現しない。
<textarea name=hoge>
</textarea>
って状態のHTMLでカーソルが2行目に移動できる、って意味だよね?

Windows IE6、Firefox1.0.4どっちでも再現しなかった。
02402282006/09/21(木) 02:32:32ID:k7zFBu8v
>>239
<textarea name=hoge>
</textarea>
・・・なら問題は無いのですが、mixiのプロフィール変更画面のような使い方をする場合、
実際にはスクリプト内では下記のようになると思います。
echo "
<textarea name=hoge>
$hoge
</textarea>
";
このとき、$hogeに何も入っていないと、出力されたHTMLは
<textarea name=hoge>

</textarea>
となってしまい、空の$hogeの分がぽっかり空行1つになってしまうのです・・・。


(※ちなみにこれはmixiでは再現できません。mixiではプロフを空欄に出来ない仕様なので)
0241nobodyさん2006/09/21(木) 02:36:40ID:???
>>240
あー、すまん。
<textarea name=hoge>
$hoge</textarea>
って書き方にしてみてくれ。
02422282006/09/21(木) 02:40:15ID:k7zFBu8v
>>241
あっっ、それで解決しました!!
・・・そうですよね、冷静に考えたら、もし$hogeが空だったときに
<textarea name=hoge>
</textarea>
という形にするには、$hogeの後ろの改行を無くせばいいだけでしたね。。。

頭が混乱しててそんな単純なことにも気がつきませんでした。
>>241さん、ありがとうございます!!

(それはともかく、やっぱりブラウザの解釈はおかしい部分がありますよねぇ…)
0243nobodyさん2006/09/21(木) 02:43:01ID:???
いや、わかんねー。
2大ブラウザで同じ解釈するんならスタンダードは<textarea>の次は改行なんだろうさ。
02442282006/09/21(木) 02:49:48ID:k7zFBu8v
>>243
ということは、W3Cだか何かで、textareaタグの後には必ず改行を
入れるべし・・・などと定めてるんでしょうか?

もし仮にそうだとしても、
<textarea name=hoge>hoge</textarea>
って書いた場合に、勝手に先頭の改行コードを1つ削除する…という動作の意図がよく分かりませんね。。。
0245nobodyさん2006/09/21(木) 02:51:10ID:???
なんかよくわからないけど、コレおいときますねー
つ[ttp://www.hyuki.com/diary/dia0402.html#i15_16]
>SGMLでは開始タグの直後、終了タグの直前のline breakは無視しなければならない
02462282006/09/21(木) 03:03:59ID:k7zFBu8v
>>245
それズバリですね!! ありがとうございます。
しかしそれにしても人間に優しくない規則というか、
あまり直感的じゃない決まり事だなぁ・・・。

特にプログラミングする時は、
<textarea name=hoge>{$body}</textarea>
とかって書きたい時もあるのに。。。
0247nobodyさん2006/09/21(木) 03:08:52ID:???
こっちの方が詳しいね。
ttp://www2u.biglobe.ne.jp/~fsasaki/WikiFan/wiki.cgi?WalWikiBugTrack%2f012
>各 Web ブラウザの動作状況
こういうのを見てどうするかは自分で考えればいいかと。
0248nobodyさん2006/09/21(木) 03:33:22ID:???
>>247
おお…、まさにこのスレでの今回のやり取りと全く同じことが漏れなくまとめられてるw

でもこの問題、意外と話題にならないよね。
少なくとも過去、このくだ質スレで今回のような話題を見かけた記憶がない。
02492352006/09/21(木) 04:04:15ID:???
>>245
SGML的に
「開始タグの直後、終了タグの直前のline breakは無視しなければならない」
ってのは確かに聞いたことあるけど、実際には改行って全然無視されてなくて、
例えば
hoge<span>
aho
</span>hoge
は
hoge aho hoge
みたいに空白が空いて表示されるよなw

しかも、>>247のレポートでも触れられてるけど
> その結果、興味深いことがわかりました。
> それは、「テキストエリア textera の場合タグの直前の改行は削除されない」という事実です。
という中途半端っぷりだし。
気付かないと結構ひっかかりそうな問題だよなー。
うん、いい勉強になったわ。
02502352006/09/21(木) 04:08:00ID:???
ちなみに出力にPHPタグを使った場合、?> の後ろの改行はPHPが自動除去するので
<textarea name=hoge>
<?php echo $hoge ?>
</textarea>
という最初(>>235)の書き方で多分問題ないんだわ。

>>240みたいに "〜" の中で変数展開の書き方だと
</textarea>の前の改行が問題になっちゃうのな。
0251nobodyさん2006/09/21(木) 06:21:28ID:yxCjYnZV
header('Refresh: 0;URL=○○○○○○');

ヘッダー関数は絶対URLで書けとどこかできいたのですが、
この場合でも相対パスは使っちゃいけないのでしょうか?
0252nobodyさん2006/09/21(木) 06:25:41ID:???
>>251
Refreshの使用はそもそも、推奨されません。
(W3Cのドキュメントより)

だいたい、それだと、例えば、セキュリティレベルを高にしているIEだと何も表示されないですよ

0253nobodyさん2006/09/21(木) 12:49:16ID:???
PHPとは直接関係ないけど、近年希に見る有益な情報だった。
ありがとう。>>228-250
0254nobodyさん2006/09/21(木) 12:58:17ID:???
>>253
うん、意外と重要な情報だと思うけど、滅多に話題に上らないね。

原因は、ブラウザの解釈が徹底してない(というかHTMLの仕様自体が曖昧?)のと、
textarea以外ではその現象が発生しにくい(しない?)から誰も気付かないんだろうね。
0255nobodyさん2006/09/21(木) 14:15:19ID:???
今まで改行から始まる文を入力したことがなかったからな
これからもだけど
0256nobodyさん2006/09/21(木) 14:17:23ID:???
問題は改行から始まる文を入力するだけじゃなく、
それを再度textareaで表示した上で再投稿した場合だからな。
結構気づきにくい問題だよ、これ。
0257nobodyさん2006/09/21(木) 14:23:49ID:v8Pew90x
リダイレクトの方法が、今ひとつわからん
セッションにフラグ用変数を与えて、フォームのアクションで再帰的に読み込んで
スイッチ文でそれぞれのページにリダイレクトしてるんだが
なんだかまどろっこしい
もっとスマートな方法はないものか。
0258nobodyさん2006/09/21(木) 14:28:23ID:???
>>257
それはページ遷移判定のロジックが分からんという話であって
リダイレクトの方法が分からんのとは全然話が違うと思う。

というわけでロジックの話ならコードを実際に見せないと
回答のしようがないと思うぞ。
いったいどんだけへんてこなコード書いてるんだよ。
0259nobodyさん2006/09/21(木) 15:54:33ID:???
5桁の絶対に被らないIDを生成したいんですが、
例えば、IP+HOST+ブラウザ情報のmd5ハッシュ値を求めて最初の5桁を使うなんてのはどうでしょうか?
自分で言うとc0b52f5db6481563916e30da43495e56で最初の5桁はc0b52になりますが、被る人なんてかなり確率低いですよね?
これよりももっといい方法あるでしょうか?
0260nobodyさん2006/09/21(木) 16:08:38ID:???
>>259
絶対被らない を求めるなら
かなり確率低い じゃだめなんじゃ・・・
適当に作って発行したIDを保存して
とかじゃだめなの?
md5の最初5桁くらいなら被りそうだ
0261nobodyさん2006/09/21(木) 16:13:55ID:???
>>259
5桁で絶対に被らない、って馬鹿?
その条件にこだわるなら、単純な連番にでもしとけ。
0262nobodyさん2006/09/21(木) 16:15:35ID:???
>>259

簡単確実な方法は
データを数値で保持しておいて
IDを発行するたびにシーケンシャルに数値を上げていくのが
確実だろうね。
同時にIDを発行した時とかのために排他ロック
は必要だろうけど。
0263nobodyさん2006/09/21(木) 16:28:39ID:25o/CiRu
>>189
昨日>>180の質問をしたものです。

呼び出しのサンプルです。
<?php

mail('[email protected]','test','test');

?>
以上です。特に問題があるように思えません。

前にも書きましたが、php.iniには、以下が書いてあり、sendmailを直接telnetで操作すると、きちんとリレーされてきます。(つまりtelnetでならメールが出せる)

sendmail_path /usr/sbin/sendmail -t -i

特に原因が思い当たりません。知恵をお借りしたいです。
0264nobodyさん2006/09/21(木) 16:29:31ID:25o/CiRu
>>190
mail()やmb_〜をコールすると、そのまま戻ってこないので、エラーも表示されてません。
02652572006/09/21(木) 16:58:16ID:???
http://ame.dip.jp/upload/1158/825123.txt
流れ的にはこんな感じ。
0266nobodyさん2006/09/21(木) 16:59:25ID:yxCjYnZV
「入力ー確認ー書込み」で3つのページを作成しているのですが、
入力されたデータを書き込む前の加工はどのページで行うのがふさわしいでしょうか?
0267nobodyさん2006/09/21(木) 17:02:47ID:???
>>263
おれもメール関数でめちゃくちゃ悩んで1ヶ月ぐらいしてあきらめたときがあった。
そんときの解決策。
to,サブジェクト、本文の他にFromも設定してあげたらうまくいった。
たったそれだけだけど、こんなことで1ヶ月も悩んだ。
ためしてみな。これでもだめなら別の回答者が現れるのをまつ。
0268nobodyさん2006/09/21(木) 17:09:25ID:???
ソースの軽量化に特化した本とかないかなぁ?
ちと、商品数が増えてきて、しんどくなってきた悪寒
0269nobodyさん2006/09/21(木) 17:10:45ID:???
>>267
ttp://www.php.net/manual/ja/function.mail.php
にfromなきゃ駄目って書いてあるな・・

マニュアル嫁
ソース晒せ
ってのを守ればもうちょっと早かったはず
0270nobodyさん2006/09/21(木) 17:10:47ID:???
データベースにいれるとauの絵文字が文字化けしてしまいます
対処法ありますか??
0271nobodyさん2006/09/21(木) 17:12:36ID:???
実体参照に変える
0272nobodyさん2006/09/21(木) 17:14:06ID:???
>>259
md5の5桁は20ビットですので1048576通りしかありません
被る確立はかなり高いです
0273nobodyさん2006/09/21(木) 17:15:29ID:???
>>271
kwskお願いします
0274nobodyさん2006/09/21(木) 17:39:57ID:25o/CiRu
>>263
なるほど。早速試してみます。
0275nobodyさん2006/09/21(木) 17:48:19ID:???
xpのcommandからフィールド名を参照したとき
MysqlのVARCHAR(10)のDefaultがNOT NULLってあるんですけど、これは
どういうときにNOT NULLを使うのでしょうか?
0276nobodyさん2006/09/21(木) 17:56:51ID:fiT61BpR
質問です。
$result = mysql_query("SELECT id FROM table1");
while($r = mysql_fetch_array($result)){
 echo "$r['id']:";
 $result2 = mysql_query("SELECT row1 FROM table2 WHERE id = $r['id']");
 while($r2 = mysql_fetch_array($result2))
  echo "$r2['row1'] ";
}
と同様のことを、よりスマートに行う方法ありませんか?
table1からは200件程度取り出します。
0277nobodyさん2006/09/21(木) 17:58:20ID:???
SQLの結合を使う
0278nobodyさん2006/09/21(木) 18:30:11ID:???
>273文字化けしました…

>>271
詳しくお願いします。
サンプルソースなどもあればお教えください!
0279nobodyさん2006/09/21(木) 18:41:11ID:???
クラスの参照渡しの意味合いがよくわからんです。
だれかこんなおいらに分かりやすい説明をぷりーず
0280nobodyさん2006/09/21(木) 18:41:58ID:???
>>278
携帯 絵文字 php
ぐらいで検索したんだよね?
0281nobodyさん2006/09/21(木) 18:48:20ID:25o/CiRu
>>269
残念ながら関係ありませんでした・・・fromなくっても動きました・・・
0282nobodyさん2006/09/21(木) 18:52:45ID:yxCjYnZV
セッション変数を消したいとき、unsetを使うものなのでしょうか?
またはsession_destroy();で破棄するべきでしょうか?
あるサイトでarray()で初期化しろとうたっているページを発見したのですが、
配列でセッション変数を初期化したほうがいいのでしょうか?

ご指摘お願いいたします。
02832822006/09/21(木) 19:04:35ID:yxCjYnZV
つづきです。
$hoge=セッション変数;←$hogeにセッション変数代入

session_destroy();←ここでセッション破棄

これがエラー(Notice: Undefined index: hoge)として帰ってきてしまいます。
セッションを破棄したことで、$hogeには何も入ってないからでしょうが、
どう記述していいのかわかりません。

0284えがみボンバイエイ2006/09/21(木) 19:07:17ID:???
http://ega.chu.jp/php/get_meta_tags.php
こういうサイト作り中なのですが、文字化けしてしまいまして、文字コード変換を教えてもらいたいです。

ソースは
<?php
//URL
$url = array("http://yahoo.co.jp";,"http://www.bb-chat.tv/";,"http://www.snsnavi.jp/";,"http://mixi.jp";,"http://livedoor.jp";,"http://iki.2ch2.net/";);

//$url配列を一個づつ処理
foreach ($url as $value){

//メタタグの内容を取得
$array = get_meta_tags($value);

//メタタグの内容を表示
echo "<p>サイト名(サイトへリンク):"."<a href=".$value.">サイト名</a>";
echo "<p>サイトのサムネイル:<img src=".'http://img.simpleapi.net/small/'.$value."; >" ;
echo "<p>はてなブックマーク数:<img src=".'http://b.hatena.ne.jp/entry/image/'.$value."; >" ;
echo "<p>サイトの内容:".$array["description"];
echo "<p>サイトのキーワード:".$array["keywords"];
echo "<hr />";
}
?>

で、echo "<p>サイトの内容:".'mb_convert_encoding( $array["'.'description'.'"],"Shift-JIS","auto")' ;
みたいにすればいいのかなと思うのですが、どうもうまくいきません。。。
0285nobodyさん2006/09/21(木) 19:10:43ID:???
>>284
配列をforeachに読み込んで、mb_convert_encodingで変換
0286nobodyさん2006/09/21(木) 19:12:37ID:???
>>284のやりかただと配列全体にmb_convert_encodingを処理するから
autoの判定が怪しくなるんじゃないの?
0287nobodyさん2006/09/21(木) 20:15:22ID:8hLu55dO
"=&"ってどういうときに使うものでしょうか?
0288nobodyさん2006/09/21(木) 20:19:45ID:???
>>286
http://www.google.com/search?num=50&hl=ja&inlang=ja&ie=Shift_JIS&oe=Shift_JIS&safe=off&q=get+%2B%22%3D%26%22+php&lr=lang_ja
02892872006/09/21(木) 20:20:24ID:yxCjYnZV
まちがえた
>>287へ
0290nobodyさん2006/09/21(木) 21:29:24ID:???
>>287
ビット演算子
ttp://www.php.net/manual/ja/language.operators.bitwise.php

このページ見てもビットちんぷんかんな俺には分からないけどな
0291nobodyさん2006/09/21(木) 21:33:52ID:???
こっちちゃうん?
http://www.php.net/manual/ja/language.references.whatdo.php
0292nobodyさん2006/09/21(木) 21:43:14ID:???
>>290
それは&=な。
0293nobodyさん2006/09/21(木) 22:24:48ID:yxCjYnZV
mysql4.1のmy.iniで文字コードをeuc-jpにしたら
エラー1067がでて起動できません。
文字コードがsjisだと問題なく起動できるのですが、
eucにするのは無理でしょうか?
0294nobodyさん2006/09/21(木) 22:33:18ID:???
>>293
それはMySQLのスレで聞いてきた方がいいと思うよ。
0295nobodyさん2006/09/21(木) 22:39:54ID:???
あぁ、データベース板が出来たのはつい最近の話しなんだね……。
0296nobodyさん2006/09/21(木) 22:45:48ID:???
十年一昔?
0297nobodyさん2006/09/21(木) 23:19:45ID:???
また、えがみボンバイエイかよw
02982932006/09/21(木) 23:37:31ID:???
windowsで使用上、mysqlでeucを使うのが無理だということがわかったのでsjisでがんばります。
お騒がせしました。
0299nobodyさん2006/09/21(木) 23:42:18ID:wtB1wQTq
AタグやIMGがあっても正しく自動リンクされる正規表現方法を教えてください。
http://2ch.net/ → <a href="http://2ch.net/";>http://2ch.net/<;/a>
<a href="http://2ch.net/";>http://2ch.net/<;/a> → <a href="<a href="http://2ch.net/";>"><a href="http://2ch.net/";></a>

$str = eregi_replace("([^=\"])http://([a-z0-9\_\-\./~@?=&-\#]+)([^<\"])", "\\1<a href=http://\\2 target=_blank>http://\\2</a>\\3", $str);
$str = eregi_replace("([a-z0-9\_\-\.]+)@([a-z0-9\_\-\.]+)", "<a href=mailto:\\1@\\2>\\1@\\2</a>", $str);
これだと、時々判定漏れで可笑しくなってしまいますorz
0300nobodyさん2006/09/21(木) 23:44:23ID:???
>>293
ujisで万事解決
0301nobodyさん2006/09/22(金) 00:38:03ID:???
>>299
そんな面倒が嫌だから、リンクを作ったりテキストを弄るのは表示直前なんだよ
確実にやりたいならリンクを戻すことから始めりゃいんじゃない。
0302nobodyさん2006/09/22(金) 01:07:04ID:???
>>299
真面目にやるならこんな感じ
ttp://www.din.or.jp/~ohzaki/perl.htm#AutoLink
0303nobodyさん2006/09/22(金) 01:11:38ID:???
>>299
まず最初にタグの中と外を分解して、外だけ自動リンク変換するとかにした方がいいんでは。
0304nobodyさん2006/09/22(金) 02:11:15ID:???
yyyymmddhhmmssな14桁の文字列を、UNIXタイムスタンプにさらっと変換する関数ってないでしょうか?
0305nobodyさん2006/09/22(金) 02:16:31ID:???
>>304
さらっとかどうかは知らんけど
echo strtotime(preg_replace('/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/', '\1-\2-\3 \4:\5:\6', $str));
くらいのもんじゃないの?
0306nobodyさん2006/09/22(金) 02:33:23ID:0rl6NvDW
質問です。

ログイン情報としてsession()を、掲示板の名前等を記憶されるためにsetcookie()を
同じスクリプト内で使いたいのですが、上手くいきません。どちらかだけだと大丈夫なのですが、
両方使う場合にはどうしたら良いのでしょうか?

0307nobodyさん2006/09/22(金) 02:38:27ID:???
>>306
両方SESSIONじゃダメなの?
ってか掲示板の名前を覚えさせる必要って言うのはあるのかな?
POSTとかで事足りる希ガス
0308nobodyさん2006/09/22(金) 02:48:57ID:0rl6NvDW
>>307
すいません、説明が不十分でした。
掲示板の名前っていうのは投稿した際のHNとかのことです。
0309nobodyさん2006/09/22(金) 02:49:43ID:???
>>305
サンクス
$yyyy = substr($src_date, 0, 4);//年
$mm = substr($src_date, 4, 2);//月
$dd = substr($src_date, 6, 2);//日
$hh = substr($src_date, 8, 2);//時
$mm = substr($src_date, 10, 2);//分
$ss = substr($src_date, 12, 2);//秒
なんて面倒なことをするとこでした。
0310nobodyさん2006/09/22(金) 02:56:03ID:X1gmluk1
$lines = explode ("\n", $lines);

配列である$linesの要素から、正規表現でマッチした配列の要素を削除する
方法が思い浮かびません。これはどうしたら出来るでしょうか?

preg_replace ('/^$/', '', $lines) だと、空文字列 ('') に置換できますが
配列の要素自体を取り除くことはできませんでした。
03113102006/09/22(金) 03:01:16ID:X1gmluk1
http://www.php.net/manual/ja/function.array-splice.php
ごめん。
マニュアルのArray見るの忘れてた。これでイケるかな。
03122702006/09/22(金) 03:07:31ID:cF1a5TbS
>>280
普通にそれでググってもなくない??
auの絵文字を実体参照に変えるやりかた
0313nobodyさん2006/09/22(金) 04:10:46ID:???
>>312
http://ns1.php.gr.jp/pipermail/php-users/2004-November/024085.html
0314nobodyさん2006/09/22(金) 06:52:44ID:???
>>310
foreach(range(0, count($lines) - 1) as $i) {
if(preg_match('/条件/', $lines[$i])) unset($lines[$i]);
}
0315nobodyさん2006/09/22(金) 07:35:45ID:???
>>310
こんなのもある。
$lines = preg_grep(パターン, $lines);
0316nobodyさん2006/09/22(金) 09:04:42ID:6cSapPbr
すみません、質問です。

PHP Version 4.3.10-16 です。OSはLinuxです (Debian 3.1)

以下のようなスクリプトを実行すると、

echo strtr('abc', 'b', 'B')."\n";
echo strtr('abc', array('b' => 'B'))."\n";
echo "\n";
echo strtr('abc', 'b', '')."\n";
echo strtr('abc', array('b' => ''))."\n";

以下のような結果になるのですが、

aBc
aBc

abc
ac

なぜ、三行目は「ac」にならずに「abc」と表示されるのでしょうか。

説明書を見てもそうなるとは書いてないように読めるのですが。

参考資料などありましたら教えてください。
0317nobodyさん2006/09/22(金) 09:38:17ID:???
''じゃ0バイトのデータじゃん。
0318nobodyさん2006/09/22(金) 09:45:26ID:???
>>316
> string strtr ( string str, string from, string to )
> この関数は str を走査し、 from に含まれる文字が見つかると、そのすべてを to の中で対応する文字に置き換え、 その結果を返します。

「対応する文字」だと書いてある。
ちなみにソース上では、fromの長さとtoの長さのMIN、つまり小さいほうをとってそこまでの長さ分しか処理してない。

まあ、toに空文字を指定したらfromに含まれる文字を全部削除、みたいな仕様のほうが便利だろうけどね。
俺の経験上strtrってそんなに使用頻度の高い関数じゃないし、何かperl由来の事情か何かあるんじゃね?
0319nobodyさん2006/09/22(金) 10:04:52ID:???
なるほど

strtrのもとは、perlのtr演算子、そのもとになってるのはUNIXのtrコマンドだろうけど、
確かに、それらには空文字だから削除するなんて仕様はないからこの動作のほうが自然化。

納得。(Perlだと、tr/b//d としないと削除しない)

アメリカ人が書いたPHPスクリプトに、あたりまえのように

strtr($hoge, array("\n" => "", "\r" => ""))

とか使われていたので、ついうっかりしてしまった。

どうもありがとう。
■ このスレッドは過去ログ倉庫に格納されています