【PHP】下らねぇ質問はここに書き込みやがれ 31
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/10/25(水) 08:45:46ID:???まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
【前スレ】
【PHP】下らねぇ質問はここに書き込みやがれ 30
http://pc8.2ch.net/test/read.cgi/php/1159979905/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しない)
・ サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0011nobodyさん
2006/10/25(水) 10:34:39ID:rZkuwLJp0012名無しさん@お腹いっぱい。
2006/10/25(水) 11:44:27ID:J6B8Hktuいきません。
for($i=1; i<=30; i++){
if(ereg("。","str.html"){
if($i/3==1){
それで、fwriteで\nを書き込むようなことを試みたんですが・・
よろしければ、鮮やかな処理をお見せいただきたい。
0013nobodyさん
2006/10/25(水) 11:54:23ID:???0014nobodyさん
2006/10/25(水) 12:04:21ID:???よくわからんけどこういうことじゃないの?
$html = str_replace('。。。','。。。<br/>',$html);
0015nobodyさん
2006/10/25(水) 12:12:24ID:???文字列。文字列。文字列。<BR>
文字列。文字列。文字列。<BR>
0016nobodyさん
2006/10/25(水) 12:16:43ID:???echo $html;
0017nobodyさん
2006/10/25(水) 12:24:00ID:???echo $v{0};
この場合の{}ってどういう意味ですか?
001812
2006/10/25(水) 12:34:59ID:J6B8Hktu関係があるところを書くと、こんなです。
$bunsyou=fopen("str.html","r+");
$kaigyou =fread($bunsyou,filesize("str.html"));
for($i=1; i<=30; i++){
if(ereg("。","str.html"){
if($i/3==1){
fwrite("str.html","。\n");
}
}
}
fclose($bunsyou);
>14
すいません。言葉が足りませんでした。
例えば、
○○○○○○○○○○○○○○。○○○○○○○○
○○○○○○○○○○○○。○○○○○○○○○○
○○。○○○○○○○○○○○○○○○○○○○。
といった文章があったとして、一度も改行されずに文章が記述されて
いるのは読みにくいので、"。"が3度出てきたら、そこで改行したい
ということです。
0019nobodyさん
2006/10/25(水) 12:39:49ID:???正規表現をばかにしすぎ
0020名無しさん
2006/10/25(水) 12:57:12ID:gy1NzvJV送信する仕組みを作りました。
相手が通常のメーラーなら問題ないのですが、hotmailなどの
フリーメールを使っている場合、文字化けしていることが
あるようです。
どうすれば相手がフリーメールでも文字化けしないでメール
送信ができるようになるでしょうか?
メール送信には、mb_send_mail関数を使っています。
この第4引数になんらかのヘッダ情報を付与すればいいのかな
とも思っていますが、どうすればいいのかよくわかりません。
よろしくお願いいたします。
Windows2000Server
PHP4.4.0
Webサーバ及びSMTPサーバはIISを利用。
0021nobodyさん
2006/10/25(水) 13:10:05ID:???ちょうどarrayで入力するときみたいに。
0022nobodyさん
2006/10/25(水) 13:19:30ID:???0025nobodyさん
2006/10/25(水) 13:26:19ID:snVEf27mどんな関数がありますか?
0029nobodyさん
2006/10/25(水) 13:38:03ID:???0030nobodyさん
2006/10/25(水) 13:39:33ID:???0031nobodyさん
2006/10/25(水) 13:42:12ID:snVEf27mそうですか・・・
PHPサイトでクリック履歴を表示してくれるサイトがあったのでついできるのかと
0034nobodyさん
2006/10/25(水) 13:50:30ID:snVEf27mアイデアだけでもいただけますか?
0037nobodyさん
2006/10/25(水) 13:55:07ID:???$str = "abcdefg";
echo $str{3};
結果 d
連想配列で{}を使うのはPHPじゃなくPerlだろ。
0038nobodyさん
2006/10/25(水) 14:04:24ID:???GPLの理念として、金銭を得るために使用しなければ作者に断りなくしてもいいのですよね?
0039nobodyさん
2006/10/25(水) 14:04:43ID:snVEf27mでも、ちょっとオイラでは・・・ むずかしそうです
0040nobodyさん
2006/10/25(水) 14:07:43ID:???普通に配列要素を示すのに[]の代わりに{}を使っても動作するっぽい。
何かの互換のため?でも多分、推奨はされないから使わない方がいいよ >17
0042nobodyさん
2006/10/25(水) 15:35:03ID:???(PHP5風に書きます)
class Example {
 :private $example = "hoge";
}
とするのと、
class Example {
private $example;
function __constructor() {
$this->example = "hoge";
}
}
この2つの違いは何でしょうか?
両方とも変数を初期化してるわけではないのですか?
0043nobodyさん
2006/10/25(水) 15:38:52ID:???2つとも変数を初期化してるだけです。
変数宣言で直接初期化する場合は式が書けないなどいくつかの制限が出ます。
逆にコンストラクタで初期化する場合、extendしたクラスでは親クラスのコンストラクタが
呼び出されなくなる場合があるため、設計に注意が必要です。
0044nobodyさん
2006/10/25(水) 15:43:13ID:???違う質問を並べてる同一人物か?
004518
2006/10/25(水) 16:32:53ID:J6B8Hktu何でございましょう?
004818
2006/10/25(水) 16:37:21ID:J6B8Hktuついでなんですけど、さっきのことで1ついいですか?
指定した文字が文章中に何回出てくるかカウントする関数
またはそれ以外の方法ってありますか?
0049nobodyさん
2006/10/25(水) 16:48:21ID:???とりあえずmb_languageが適切に設定されてるか確認しる
>>38
ライセンスくらい読めよ(´・ω・`)
0050nobodyさん
2006/10/25(水) 16:51:06ID:???書いてみた。つかってくれ。
配列を使うからforではなくforeachにしてみた。
つ[ソースコード]
$text = "あああ。いいい。ううう。えええ。おおお。かかか。ききき。くくく。";
$a = explode("。",$text);
$i=0;
foreach($a as $v){
if ($i>1) {
echo $v."。<br>";
$i=0;
} else {
echo $v."。";
$i++;
}
}
0052nobodyさん
2006/10/25(水) 16:54:05ID:???0053軟式PHP
2006/10/25(水) 16:56:36ID:???3つ出てくるごとなら
if($i/3==1){
ではなくて、
if(!($i%3)){
じゃないのかな。
文字をカウントするのはsubstr_count()。
>>20
どこが文字化けしてるん?サブジェクトだとは思うけど。
本文は文字化けしてないよね。
005450
2006/10/25(水) 16:59:09ID:???>>50のソースは一番最後の「。」が表示されるバグがあるので
$a = explode("。",$text);
のあとに正規表現で最後の「。」をとる記述をかけば問題はないでしょう。
一番最後の文字を削ればいいだけなのであとは調べてください。
0056nobodyさん
2006/10/25(水) 17:05:00ID:???結構意味不明なんだけど、PHP5でさらに拡張された部分を
まだ勉強したことないプログラマ、って解釈でいいの?
それだと結構いそう。
もっとも、必要になったら3日でマスターできる内容なので
現場の環境が変わってないならわざわざ勉強する必要も感じないが。
005718
2006/10/25(水) 17:07:01ID:J6B8Hktu早速トライします。
0058nobodyさん
2006/10/25(水) 17:20:42ID:???インスタンスを1つしか作らないなら>>43の言ってる事だけ気をつければok。
たくさん作るなら
$var1 = 1;
$var2 = 1;
と
$var1 = $var2 = 1;
の違いについて調べれば答えは出てくると思う。
005929
2006/10/25(水) 17:20:59ID:9Xs/4YIO当方PHPにて画像を取得、それを添付禁止処理して表示としたいのです。
宜しくお願いします
0061軟式PHP
2006/10/25(水) 17:26:36ID:???ちょっと文章が分かりづらいんだが・・・。
画像が添付されたメールを受信して、PHPでそれを解析して画像を取得。
その取得した画像をサイトに載せる際に、閲覧ユーザーがその画像をダウンロードして
他の人に配れないように添付禁止にしたいってこと?
006229
2006/10/25(水) 17:33:19ID:9Xs/4YIOレスありがとうございます
携帯のメール添付を出来なくするということです。
auだとHTMLで保存できないように出来ますが、DoCoMoは添付禁止にするしかないんです
0063nobodyさん
2006/10/25(水) 17:35:46ID:???着メロのコピー禁止は見たことあるけど、画像でもそんなことできるんだっけ。
PHPでやる方法以前にDocomoの仕組みが分からん。どっかに説明ない?
0064軟式PHP
2006/10/25(水) 17:42:14ID:???俺が前やったやり方だけど、ImageMagickでオプションに「-comment copy="NO"」をつけて再変換したよ。
PNGの場合は、ImageMagickだと出来なかったんで、HDRチャンク、tExtチャンクを取得してバイナリ直接弄ってコメント埋め込んだよ。
Docomoだから関係はないと思うけど。
006529
2006/10/25(水) 17:53:02ID:9Xs/4YIODoCoMoの技術者向けサイトおいておきます
ttp://www.nttdocomo.co.jp/service/imode/make/
軟式PHPさん
ImageMagickはPerlの時少しいじった程度なのでできるかなぁ^^;
GDでは無理でしょうか?
0066軟式PHP
2006/10/25(水) 18:14:14ID:???GDじゃないけど、海外のPHPモジュール使ったやり方のサイトを見つけた。
「kddi_copyright PHP GD」でググって一番初めにひっかかるやつとか参考になると思う。
「The PHP Metadata Toolkit」っていうやつを使うみたい。サンプルらしきものも載ってるんで参考になるんじゃないかな。
題名が全角9文字以降から文字化けするのですが、
対策法はありますか?
0068nobodyさん
2006/10/25(水) 20:46:22ID:bFjR6zW3htmlspecialcharsとstripslashesを両方やるべきなんですか?
0069nobodyさん
2006/10/25(水) 21:24:51ID:???どういう表示のさせ方をするかにもよるがhtmlspecialcharsは大抵必須。
stripslashesはmagic_quotes_gpcがONになってる場合のみ必要。
しかしそもそもmagic_quotes_gpc自体があまりONにすべきではない。
だがそのような低レベルな質問をする人はこれをONにしておいた方がいいだろう。
0070nobodyさん
2006/10/25(水) 21:41:19ID:bFjR6zW30071nobodyさん
2006/10/25(水) 22:05:37ID:???検索条件から、商品一覧を表示する処理を作っているんですが、
WEBアプリケーションの本を読んだところ、一度商品一覧を全部取得してセッションにつめこんで、
ページビューごとに、件数で絞って表示させていたんですが。
普通はセッションいれませんよね?
検索結果のURL直リンで表示できなくなってしまうし。
どうなん?
0072nobodyさん
2006/10/25(水) 22:29:15ID:???なんだ、その腐った本は。
まあ商品数が極端に少ないならそれもアリかもしれないけど、
普通はそんな無駄なことしないわな。
っていうかセッション・ファイルにいちいち記録し直してたらDBの意味ないし。
ショッピングモール等の規模が大きくて商品を絞り込んでいく場合に有効
テンポラリファイルに書き出す処理を自前で実装するのと同じで
セッションに丸投げするか自分でコードを書くかの違い
規模が小さい場合、インデックスを作成して毎回検索しなおす方手もある
適材適所
0074nobodyさん
2006/10/25(水) 22:57:11ID:???余計なとこまで全部エスケープ入れちゃうから。
結局、エスケープ不要な箇所を判断していちいち外す必要が出るんだが、
それができる人なら最初から必要な箇所だけエスケープした方が早くて、
性能的にもそっちの方が速かったりして、何の意味があるんだか分からん機能。
まー、ものすごく単純なプログラムで何も考えずに作るんであれば有効。
0075nobodyさん
2006/10/25(水) 22:58:30ID:???てんぷらファイルはちょっとくらいサイズでかくても困らないが、
それを丸ごとセッション配列に格納してたら性能定価しないか?
0076nobodyさん
2006/10/25(水) 23:16:01ID:???なるほど、ありがとうございます。
ちょっと行き詰ったのでラーメン食べてきます。
ちょっと落ち着いて考えてみた
実際に比べたわけじゃないけど
テンポラリの方がよさげ
0078nobodyさん
2006/10/26(木) 00:20:58ID:fW8Q3JdKどこに@をつければいいんですか?
foreach ($rss->items as $item ) {
@foreachでは無理でした
0079nobodyさん
2006/10/26(木) 00:26:02ID:5k/S84KJ現在、返信が出来る掲示板を作成しているのですが、
返信記事の投稿番号に1をプラスして表示できないのです。
つまり、
親記事:1
子記事1:1
子記事2:1
子記事3:1
といった感じです。
一応ソースです。
数を増やす部分:http://source.is.land.to/s/q.phps
全体(無駄多):http://source.is.land.to/s/all.phps
記事が記録されているファイルを読み込む
最後の要素取り出す
その要素を配列にする
番号の要素に1をプラス
$num に代入
といった感じです。
ちゃんとソース見て無いけど
カウントアップする時、整数としてキャストしてます?
0085nobodyさん
2006/10/26(木) 00:44:26ID:???0086nobodyさん
2006/10/26(木) 01:07:50ID:???foreach ((array)@$rss->items as $item)
だな。
$rss->itemsが確実にissetな状態なら@はつけなくていいけど。
008778
2006/10/26(木) 01:08:27ID:???0089nobodyさん
2006/10/26(木) 01:16:37ID:???ありがとう。
0091nobodyさん
2006/10/26(木) 01:39:40ID:???$num = ($for_num_lines[0] + 1);//それに1をプラスします
じゃなくて
$num = ($for_num_lines + 1);//それに1をプラスします
じゃないの?
0092nobodyさん
2006/10/26(木) 02:12:15ID:5k/S84KJ>>83
キャストですか・・・
うーん。やってないですorz
やってみます。
>>91
$for_num_linesはたたたたたたぶん配列だと思うんですよよよよ。
0093nobodyさん
2006/10/26(木) 02:22:14ID:???$next_lines = explode("\t",$end_1);//それを分割して配列にしまいます
$for_num_lines = array_splice($next_lines,-5,1);//最後から5番目の要素(最後の$num)をとりだします。
これで配列のわけがあるかw
0097nobodyさん
2006/10/26(木) 02:40:10ID:???まー、普通こんな場面でarray_splice()使うやついないけどな。
0098nobodyさん
2006/10/26(木) 02:43:43ID:???とりあえず読んでみたけど、そもそも+1した$numってのは
どこの表示で使われてるの?そこが分からんかった。
0100nobodyさん
2006/10/26(木) 07:26:45ID:???array_spliceの戻り値はarrayだよ
まあでも配列の要素を取り出したいなら素直に添え字指定して
$num = $next_lines[1] + 1;
とかの方がいいと思うが
>>98
$data = $for_num."\t".$num."\t".$name."\t".$bun."\t".$pass."\t".$host."\n";
に使われているようだ。
0101nobodyさん
2006/10/26(木) 07:49:51ID:???キー入力を待ってその値を受け取り、計算して表示
みたいなことはできるのでしょうか?
C言語のscanfみたいなやつです。
0102nobodyさん
2006/10/26(木) 08:14:07ID:???$stdin = fopen('php://stdin', 'r');
?>
0103nobodyさん
2006/10/26(木) 08:31:18ID:ZtENe/Qshogehoge.php?hogehoge=hogehogehoge
みたいなやつはSwitch文で作っているのでしょうか?
0104nobodyさん
2006/10/26(木) 08:35:37ID:???PHPで下の文字コードがあった場合に反応をさせたいのですが
環境はEUCで統一されています。この場合どのように書けばいいんでしょうか?
0x8740〜0x879F
0xED40〜0xEEFC
0xFA40〜0xFC4B
0xF040〜0xF9FC
0105nobodyさん
2006/10/26(木) 08:52:32ID:dpAXN0uK意図的に近日に変更したいんだけど、それって、headerでLast-Modifiedを出せば
いいですかね?
なんでそういうことがしたいかというと、検索エンジン(具体的にはGoogle)に引っかかり
やすくしたいからなんですが
(ファイルの更新が頻繁に行われていると、再取得しによく来るとからしい)
0108nobodyさん
2006/10/26(木) 09:59:58ID:???はい、意味わかんね
>>104
正規表現でやったら?
つーかmb_convert_encodingでよさそうな気もするけど。
>>105
Last-modified以前にPragma: no-cacheとかExpiresをつけてたら常に更新されていると見なされるってことはないの?
検索エンジンがどうしてるのか知らないけど。
0109nobodyさん
2006/10/26(木) 10:14:41ID:???out of dynamic memory in yy_create_buffer() というエラーがでたんですが、
#a.php
<?
include("b.php");
$a = "HELLO";
echo $b;
?>
#b.php
<?php
include("a,php");
$b = "WORLD";
echo $a;
?>
もしかして、相互のファイルにincludeした場合は無限ループするんですか?
0110nobodyさん
2006/10/26(木) 10:24:17ID:???無限ループする。
悪いことは言わないから、include_onceかrequire_onceにしとけ。
(つーかphpってbisonのエラーをそのまま垂れ流すんだな。初めて知った。)
■ このスレッドは過去ログ倉庫に格納されています