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

【PHP】下らねぇ質問はID出して書き込みやがれ 97

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん2010/07/23(金) 06:24:51ID:3G71fl8i
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。


【PHP】下らねぇ質問はID出して書き込みやがれ 96
http://pc11.2ch.net/test/read.cgi/php/1275032024/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0904nobodyさん2010/09/17(金) 18:16:51ID:???
http://hibari.2ch.net/test/read.cgi/php/1167984858/513-588

あれから1年か
久々に見たが痛いなこれはwwwww

ていうかこっちのスレに出張しなくていいから(・∀・)カエレ!
0905nobodyさん2010/09/17(金) 18:22:48ID:???
>>903
じゃあお前かわりに答えろ^^
0906nobodyさん2010/09/17(金) 18:24:30ID:na186H29
DOMでやりたいことをやろうとしていきなり詰まりました

land.toでPHPを実行したら
DOMDocument::loadHTML() expects parameter 1 to be string, array given in /省略

と出ました


$doc = new DOMDocument();

これがエラーになっているようですが 何かおかしいところがあるのでしょうか
09077372010/09/17(金) 18:31:13ID:???
>$doc = new DOMDocument();
>これがエラーになっているようですが 何かおかしいところがあるのでしょうか

エラーメッセージは、そうは言ってないようなんだが。
0908nobodyさん2010/09/17(金) 18:34:21ID:???
>>906
取得したいFormのサンプルをここに書いて
0909nobodyさん2010/09/17(金) 18:35:33ID:na186H29
すみません コピペする行を間違えていました


<?php
require_once "HTTP/Client.php";
$login_url = "url";
$client =& new HTTP_Client();
$client->get($login_url);
$Res=$client->currentResponse();

$doc=& new DOMDocument();
$doc->loadHTML($Res);
$test=$doc->getElementsByTagName('a');
echo $test;
?>

です
0910nobodyさん2010/09/17(金) 18:37:49ID:na186H29
>>908

<form action=" " method="post" >
<input type="hidden" name=" " value=" " class="">
<input type="hidden" name=" " value=" " class="">
<input type="hidden" name=" " value=" " class="">
<input type="hidden" name=" " value=" " class="">
<input type="hidden" name=" " value=" " class="">
<input type="hidden" name=" " value=" " class="">
<input type="hidden" name=" " value=" " class="">
<input type="submit" name=" " value=" " class="">
<input type="submit" value=" " class="">
</form>
0911nobodyさん2010/09/17(金) 18:45:29ID:???
>>909-910
$Resをvar_dumpで見てみればわかるかと
欲しいのは$Res['body']じゃないの?
0912EM111-188-12-75.pool.e-mobile.ne.jp2010/09/17(金) 18:57:19ID:???
>>909
$doc->loadHTML($Res);の後に$doc->saveHTML()を書いてみ
0913nobodyさん2010/09/17(金) 19:01:49ID:na186H29
>>911
申し訳ありません
$Res['body']のことを失念していました
直して

<?php
require_once "HTTP/Client.php";
$login_url = "http://www.mbga.jp/.pc/_t?_from=lg&login_id=0sm3262c0-2249k@ezweb.ne.jp&login_pw=dattin72";
$client =& new HTTP_Client();
$client->get($login_url);
$Res = $client->currentResponse();
$Res = $Res['body'];
$doc=& new DOMDocument();
$doc->loadHTML($Res);
$test = $doc->getElementsByTagName('a');
echo $test;
?>

これで一応できるようになりましたが…
まだエラーがありました
HTMLをロードしている間にエラーが発生しているようです

まだ修正する必要があるようですが 頑張ってみます
0914EM111-188-12-75.pool.e-mobile.ne.jp2010/09/17(金) 19:13:23ID:???
>>913
サンプルね
文字コードもエラーに関係するからちゃんと変換してあげる事
■test.php
$url = "index.html";
$toEnc = "UTF-8";
$file = file_get_contents($url);
$enc = mb_detect_encoding($file, "auto", true);
$file = mb_convert_encoding($file, $toEnc, $enc);
$doc = new DOMDocument();
$res = $doc->loadHTML($file);
echo $doc->getElementById("test")->tagName;

■ index.html
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>New Document</title></head>
<body>
<div>
<form action="" method="post" id="test">
<input type="hidden" name="a" value="1">
<input type="hidden" name="b" value="2">
<input type="hidden" name="c" value="3">
<input type="hidden" name="d" value="4">
<input type="hidden" name="e" value="5">
<input type="submit" value="send">
</form>
</div>
</body>
</html>
0915EM111-188-12-75.pool.e-mobile.ne.jp2010/09/17(金) 19:15:42ID:???
文字コードがおかしいと以下のエラーが出るからね
Warning: DOMDocument::loadHTML(): htmlParseStartTag:
0916nobodyさん2010/09/17(金) 19:28:29ID:???
>>914
なるほど・・・こういう使い方もありましたか
参考になりました ありがとうございます
0917nobodyさん2010/09/17(金) 19:44:38ID:na186H29
getElementById("test")->getAttribute("a");
で値を取得しようとしたらできませんでした・・・
0918nobodyさん2010/09/17(金) 19:51:14ID:???
そりゃできねえだろ・・・
0919nobodyさん2010/09/17(金) 19:51:48ID:???
>>917
何の値取ろうとしてんだ
0920nobodyさん2010/09/17(金) 19:52:07ID:???
>>917
ヒントfirstChild
0921nobodyさん2010/09/17(金) 19:52:58ID:???
>>917
これよめ
ttp://www.openspc2.org/JavaScript/JavaScript_DOM/method/getAttribute/index.html
0922EM111-188-48-213.pool.e-mobile.ne.jp2010/09/17(金) 19:58:04ID:???
まあ標準関数じゃなくてパーサー使ったほうが楽なんだけどな
ttp://sourceforge.net/projects/simplehtmldom/
0923nobodyさん2010/09/17(金) 19:58:50ID:???
自己解決したのでもういいです。
0924nobodyさん2010/09/17(金) 20:19:50ID:na186H29
違ってたのですかorz


aの値を取得しようとしていたのですが…

>>920
0925EM111-188-48-213.pool.e-mobile.ne.jp2010/09/17(金) 20:28:15ID:???
>>924
さっきと書き方換わるけどHTMLはさっきのやつでサンプル

$url = "index.html";
$file = file_get_contents($url);
$doc = new DOMDocument();
$doc->encoding = "UTF-8";
$res = $doc->loadHTML($file);

$items = $doc->getElementsByTagName('input');
$cnt = $items->length;
echo $items->item(1)->getAttribute('value')."\n";
echo $items->item(4)->getAttribute('value')."\n";


0926nobodyさん2010/09/17(金) 20:36:56ID:???
>>924
DOM使うならDOMのことをもうちょっと勉強した方が良い
もしこのDOMパーサがJSと同じ動作をするのであればnameがaのをとるのは
>>920が書いてるようにfirstChildでいい

getElementById("test")->firstChild

もしくは

getElementById("test")->children[0]

こんな感じだ
あとはnameから直接取得とかな

getElementsByName("a")->item(0)

0927nobodyさん2010/09/17(金) 22:15:06ID:???
>>926
上から目線、カッコ悪いよ

AC公共広告き(ry
0928nobodyさん2010/09/17(金) 22:20:11ID:???
>>917
htmlにaという属性はないから取得できる訳ないでしょw
0929nobodyさん2010/09/17(金) 22:22:54ID:???
>>917
htmlにaという属性はないから取得できる訳ないでしょw
0930nobodyさん2010/09/17(金) 22:25:44ID:???
>>917
htmlにaという属性はないから取得できる訳ないでしょw
0931nobodyさん2010/09/17(金) 22:32:23ID:???
>>917
htmlにaという属性はないから取得できる訳ないでしょw
0932nobodyさん2010/09/17(金) 22:37:26ID:???
全然おもしろくない
0933nobodyさん2010/09/17(金) 22:39:28ID:???
>>928
暇だな、お前
0934nobodyさん2010/09/17(金) 23:03:05ID:???
>>929-931は荒らし
09359282010/09/17(金) 23:17:33ID:???
荒らしかw
aって属性はない事をしたのに何だこいつらw
どうせgetAttributeの使い方知らないんだろうなw
0936nobodyさん2010/09/17(金) 23:22:57ID:???
setAttribute使えば属性作れる
0937nobodyさん2010/09/17(金) 23:35:06ID:???
自己解決したのでもういいです。
0938nobodyさん2010/09/18(土) 00:39:14ID:fDVENpH6
既存のシステムにphpで15万行(コメント、空行を除く)のソースがあるのですが、
これを他の言語(rubyが第一候補)に置き換えようとした場合、
何人月くらい掛かるか、だいたいの目安を教えて頂けますか?

発注する金額のおおよその目安が知りたいです。
過去ログ見ると、1人月で1万行以上書けるという人も見掛けますが、
そうすると大体15人月で1500万円程度でシステム開発会社に発注可能でしょうか?
0939nobodyさん2010/09/18(土) 00:41:03ID:???
はてなで聞いたほうがいいんじゃないの?
0940nobodyさん2010/09/18(土) 00:44:23ID:???
15万行で1500万w
0941nobodyさん2010/09/18(土) 00:52:46ID:fDVENpH6
>>939
最近はてなで聴いても、以前よりも質が良くない回答ばかりなので、
利用者数が多いこちらでお聞きしました。

>>940
少し、安いでしょうか?
ただ、単価も100万円で想定していますので、
かなり腕がいい人に、やって貰えるのではと思っています。

今のシステムは使いにくく、又仕様バグで一部手動でやっているところもあるので、
この際、全て作り変えようと思っています。
腕が良い人3人くらいで、5ヶ月でやって貰えると業務的には大変助かります。
0942nobodyさん2010/09/18(土) 01:05:29ID:???
地域とかにもよるけど妥当なとこじゃないかな
しかし何故ruby?
0943nobodyさん2010/09/18(土) 01:08:50ID:???
全て作り変えるって、ほとんど作り直し?
0944nobodyさん2010/09/18(土) 01:14:58ID:???
>>942
ありがとうございます。
Rubyにしたのは、最近の主流になりつつあると日経の雑誌を読んだのと、
あとは、生産性が高いらしいという点です。

ちなみに、金額は妥当ということですが、もう少し安くなったりしますか?
会社は、東京ですが、田舎の会社に発注すれば交渉次第で1000万円程度になりますか?

>>943
今のシステムは、画面も良くないし、分かりにくいし、バグもあるので、
それらを一般的なレベルに直してもらい、あとは他の会計パッケージと連動して決算処理までできればと思っています。
ドキュメントはあまりありませんが、ソースは納品時の一式があります。
0945nobodyさん2010/09/18(土) 01:15:54ID:???
>>941
悪い事は言わない。
やめとけ。手動でやってるところだけ自動化した方が良い。
0946nobodyさん2010/09/18(土) 01:16:32ID:fDVENpH6
すみません、age忘れました。
0947nobodyさん2010/09/18(土) 01:25:03ID:???
rubyの方が明らかに単価高いだろ
不満ある部分の改修と自動化できてない部分の自動化を
どこかもっと優秀な所に頼めば?

あとシステム的な所でどうなのかっていうのを
どこかコンサルに入ってもらうとかさ・・・
0948nobodyさん2010/09/18(土) 01:41:19ID:???
Rubyが主流になりつつあるってホント?現場でも他社の社長からも聞いたことないが。
ほぼPHP一色に感じるが。違うなら、俺の見てる世界が狭いんだな。

システムやバグの改善も含めるなら、移植じゃなくて作り直したほうがいい。
0949nobodyさん2010/09/18(土) 03:22:36ID:???
安く上げようとすると逆にバグ埋め込まれたりするから困る
0950nobodyさん2010/09/18(土) 04:16:26ID:???
Rubyは、phpの4分の1の行数で書けるらしいから、生産性は良いだろうね。
ただ、技術者がphpと比べて少ない。
0951nobodyさん2010/09/18(土) 04:34:38ID:???
1/4の行数で書けるっていっても
メソッドをつなげて書けるからじゃないの?
0952nobodyさん2010/09/18(土) 06:45:55ID:???
ステップ数は変わらん罠
0953nobodyさん2010/09/18(土) 07:10:40ID:???
rubyだと、例えばDBへの更新処理もSQLを書かなくても自動でやってくれるから、
コードそのものが不要になって、コード量が激減するという話だけど。
0954nobodyさん2010/09/18(土) 07:48:58ID:???
アホや
フレームワークと言語を同列に考えるアホがおったで
rubyやってるやつはほんまアホやのぉ
0955nobodyさん2010/09/18(土) 07:52:23ID:???
今や言語とFWは一体だろ。切り離して考える方がアホ。
精神分裂病じゃないの?
0956nobodyさん2010/09/18(土) 08:30:48ID:???
お前らがどんだけアホかを確認するために、rubyを勉強してみたくなった
0957nobodyさん2010/09/18(土) 09:46:47ID:???
RailsのORMは便利だけど速度を犠牲にするのはなぁ
0958nobodyさん2010/09/18(土) 09:47:35ID:???
最近の
SQL書いたら負け
みたいな風潮はどうにかならんもんかね
0959nobodyさん2010/09/18(土) 09:49:39ID:???
>>941
マ板で聞いたほうがいいぞ
ここはガキしかい居ないから
0960nobodyさん2010/09/18(土) 10:57:37ID:???
>>958
だからといって、プログラムに直接SELECTとか書いてあったら、
すごく興ざめだけど。
0961nobodyさん2010/09/18(土) 11:05:07ID:0ynij3di
fsockopenでウェブからデータを取得・加工して保存しているのですが、
gzipを解凍する際に、gzdecodeだとエラーが出るため、
一旦取得したデータをファイルに保存して、gzopenで開いて処理しています。
一旦ファイルに保存したりせずにgzipを解凍する方法は何か無いでしょうか?
よろしくお願いします。
0962nobodyさん2010/09/18(土) 11:46:29ID:???
$body = "gzipされたデータ";
echo gzread(gzopen("data:application/x-gzip;base64,".base64_encode($body),"r"),1048576);

もしくは
echo file_get_contents("compress.zlib://http://www.example.com/");

0963nobodyさん2010/09/18(土) 11:48:12ID:???
公式に投稿されたコードはタメになる
ttp://php.net/manual/ja/ref.zlib.php
09649612010/09/18(土) 12:10:07ID:???
ありがとうございます!
こんなやり方があるとは…
サンプルコードも頑張って読んでみます。
ありがとうございました。
0965nobodyさん2010/09/18(土) 12:15:59ID:3DxtMwFg
Windowsでメール送信のテストがしたいんですけどsendomailと互換性のある無料のsmtpサーバソフトってありますか?
PHPで動かせるものでお願いします
0966nobodyさん2010/09/18(土) 12:38:42ID:???
>>965
sendmane
0967nobodyさん2010/09/18(土) 12:55:09ID:???
sendmaneと↓はどっちがいいんだろうか
ttp://www.spencernetwork.com/CommonGatewayInterface/WindowsProgram/sendmail.exe.html
0968nobodyさん2010/09/18(土) 13:46:55ID:???
>>925
indexのvalueを日本語にしたところ文字化けしました
UTF-8だからでしょうか…
Shift-JISでやっても同じでした
0969nobodyさん2010/09/18(土) 14:01:00ID:???

文字化けは何度も出てるだろーが
自分で過去ログ嫁

出来損ないの馬鹿
0970nobodyさん2010/09/18(土) 15:16:37ID:???
自己解決したのでもういいです。
0971nobodyさん2010/09/18(土) 15:38:24ID:LxDnyvQU
$kensakumoji = "あいうえおかきこけこさしすせそ あいうえおかきこけこさしすせそ";




↑から "き"を先頭に5文字抜き取るコードを教えていただけないでしょうか?
(文字列に"き"は1回、もしくは複数回、登場するかもしれません)

お忙しいかとは思いますが、よろしくお願いします。
0972nobodyさん2010/09/18(土) 15:49:27ID:???
別に忙しくないけど少しは自分で考えろ
0973nobodyさん2010/09/18(土) 15:54:21ID:???
複数回登場したらどうして欲しいのか分からないな
09749712010/09/18(土) 15:59:42ID:LxDnyvQU
説明不足でスミマセン

検索ヒットが1個でも、複数個でも、抜き取った文字列を配列に入れて頂ればと思います。
0975nobodyさん2010/09/18(土) 16:00:48ID:???
>>971
マジレスするがそんなの小学生でも組めるぞ。
アホ杉
0976nobodyさん2010/09/18(土) 16:22:23ID:???
>>968
普通自分の環境で文字コード変えるでしょ
$doc->encodingの値を変えるなり、予め文字列をコンバートしとくとかすればいいじゃん
0977nobodyさん2010/09/18(土) 16:23:48ID:???
>>971
正規表現 ^.*?[き].*?$
0978nobodyさん2010/09/18(土) 16:31:05ID:???
>>971
コードを書いてくれじゃ誰も答えてくれないと思うぞ。
自分でコード書いてみてうまく動かないから、
どこが間違ってるか教えて欲しいのならわかるが。
0979nobodyさん2010/09/18(土) 16:43:33ID:???
>>971
文字列の出力方法程度の事は分かりますか?
背伸びをせずコツコツと勉強していきましょう
09809712010/09/18(土) 16:44:45ID:LxDnyvQU
重ねて説明不足ですみません。



$kensakumoji = "あいうえおかきこけこさしすせそ あいうえおかきこけこさしすせそ";

// $kensakumojiという文字列から "き" の登場回数を検索
substr_count($file, "き");


for("き" の登場回数分ループ){
// $kensakumojiという文字列から "き"が何文字目にあるか調べる
$mojime = ここがわかりません
// $mojimeから5文字分を抜き取る
echo (substr($kensakumoji, $mojime, 5)."<br>");
}
0981nobodyさん2010/09/18(土) 16:45:39ID:???
>>980
正規表現 ^.*?([き].{5}).*?$
09829712010/09/18(土) 16:46:43ID:LxDnyvQU
>>980は間違いでした、訂正です。

$kensakumoji = "あいうえおかきこけこさしすせそ あいうえおかきこけこさしすせそ";

// $kensakumojiという文字列から "き" の登場回数を検索
$kaisuu = substr_count($kensakumoji, "き");


for("き" の登場回数分ループ){
// $kensakumojiという文字列から "き"が何文字目にあるか調べる
$mojime = ここがわかりません
// $mojimeから5文字分を抜き取る
echo (substr($kensakumoji, $mojime, 5)."<br>");
}
0983nobodyさん2010/09/18(土) 16:51:50ID:???
>>982
何度も書かせんな

正規表現:[き].{5}
09849712010/09/18(土) 16:59:01ID:LxDnyvQU
>>983
正規表現というモノを、どのようにコード化すればよいのでしょうか。。。
0985nobodyさん2010/09/18(土) 17:03:53ID:???
php 正規表現でggったの?
09869712010/09/18(土) 17:29:50ID:LxDnyvQU
>>985
正規表現に関する例文が沢山あったのですが
私の目的とするモノは見つけられませでした
0987nobodyさん2010/09/18(土) 17:35:36ID:???
ぜんぜんピンと来ない
「あいうえお」じゃなくて具体的な例で何がしたいのか教えてくれ。
0988nobodyさん2010/09/18(土) 17:52:27ID:???
インクリメンタルサーチじゃねえの?

まあ思い切り答えがかいてあるのに理解できない奴が作れるとは思えんが
0989nobodyさん2010/09/18(土) 18:13:44ID:???
スマートフォン対応のサイトを構築しておりますが、
PHPのiPhone対応の状況はどうでしょうか?
この点、あまり情報がないので、対応されている方がいらっしゃいましたら、
アドバイスや構築の際の覚悟などについてご教示頂ければ幸いです。
0990nobodyさん2010/09/18(土) 18:17:43ID:???
>>971
例文じゃなくてマニュアル読め >>3
0991nobodyさん2010/09/18(土) 18:18:12ID:???
>>989
問題ないよ
というかサーバサイドは関係なくないか?

それともiPhone対応を謳ったテンプレートとかフレームワークを探してるって意味?
0992nobodyさん2010/09/18(土) 18:23:53ID:???
>>976
サーバ側の文字コードをUTF-8にしてencodingの値をUTF-8 や Shift-JISにしても文字化けしました
0993nobodyさん2010/09/18(土) 18:44:43ID:???
>>972
どこまでは文字化けせず、どこで文字化けするのか
原因を自分で切り分けて確認しろよ。
文字化けってのは結局ブラウザの表示文字コードが一致してないわけだから
ブラウザの文字コード変えてみて正常に表示できる文字コードを調べろ。
0994nobodyさん2010/09/18(土) 18:46:23ID:???
>>976 ね。
0995nobodyさん2010/09/18(土) 19:02:34ID:???
宿題聞くの辞めてほしい
0996nobodyさん2010/09/18(土) 19:07:21ID:???
>>992
まず取得した文字列の文字コードはなんなの?
スクリプトファイルの文字コードは?
0997nobodyさん2010/09/18(土) 19:19:21ID:???
数カ月書き込めなかったやつが増えたのか以上な伸びだな
とりあえず次スレ立てますよ
0998nobodyさん2010/09/18(土) 19:24:45ID:???

http://hibari.2ch.net/test/read.cgi/php/1284805237/
0999nobodyさん2010/09/18(土) 19:25:21ID:qF/0CouG
【OS名】CentOS 5.5 (32bit)
【PHPのバージョン】5.3.3
【連携ソフトウェア】Qdmail
【質問内容】
問題点:メールのタイトルが特定の文字列のときに文字化けしてしまいます。
タイトルが「メール」のときは文字化けするんですが「テスト」なら文字化けしません。
タイトルが文字化けするときの文字列を本文に書くと同じく文字化けします。

どこか見直す点はありますでしょうか?
ちなみに$mail->charset('UTF-8', 'base64');にしてもiso-2022-jpからutf-8になるだけで改善されませんでした。

メール→文字化け
テスト→正常
あかさたなはまやらわ→正常
アカサタナハマヤラワ→文字化け

ちなみに「あかさたなはまやらわ」のときのメールヘッダは
Subject: =?iso-2022-jp?B?GyRCJCIkKyQ1JD8kSiRPJF4kZCRpJG8bKEI=?=
ですが、
「アカサタナハマヤラワ」のときは
Subject: =?iso-2022-jp?B?GyRCZWIbKEI/GyRCZWIbKEI/GyRCZWIbKEI/GyRCZWIbKEI/GyRCZWMbKEI=?=
=?iso-2022-jp?B?GyRCNGUlb2VjXGUmJmVjGyhCPxskQmVjGyhCPw==?=
となっています。二行になって頭にTabが入っているようです。

↓のファイル自体はUTF-8で作られています。
require_once 'qdmail.php';
$mail = new Qdmail();
$mail->to('test@example.com'); // 実際はGmail宛 Yahoo宛も同じ結果です
$mail->subject('メール');
$mail->text('ここに本文');
$mail->from('info@example.com', '管理者');
$mail->send();
1000nobodyさん2010/09/18(土) 19:32:44ID:???
新スレでどうぞ
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。