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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2013/09/19(木) 13:47:19.93ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 129
http://kohada.2ch.net/test/read.cgi/php/1375636484/

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

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0191nobodyさん2013/10/07(月) 19:20:57.28ID:???
>>190
投稿前に確認すらできないゴミクズは二度と来るな
0192nobodyさん2013/10/07(月) 20:15:11.02ID:hXbfRE6C
本当に簡単な質問ですみません
http://www.phpbook.jp/appli/keijiban/index1.html
ここにあるkeijiban1.phpのphpの部分を

22: <?php
23:
24: $personal_name = $_POST["personal_name"];
25: $contents = $_POST["contents"];
26:
27: if ($_POST["personal_name"] != "" && $_POST["contents"] != ""){
28: print("<p>投稿者:".$personal_name."</p>");
29: print("<p>内容:</p>");
30: print("<p>".$contents."</p>");
31: }
32:
33: ?>

に変えたのですが
Notice: Undefined index: personal_name in C:\xampp\htdocs\workspace\bbs.php on line 24
Notice: Undefined index: contents in C:\xampp\htdocs\workspace\bbs.php on line 25
Notice: Undefined index: personal_name in C:\xampp\htdocs\workspace\bbs.php on line 27
というエラーが出ます
エラー出ないように修正しようとしたのですがうまく出来ませんでした
どのように直せば良いでしょうか
0193nobodyさん2013/10/07(月) 20:57:27.29ID:???
>>192
入力内容やらHTTPリクエストメソッドのチェックやらが全部省略されてるから警告が出る
error_reporting(E_ALL ~ E_NOTICE);
で警告は消せるがこれは悪手
勉強したいのなら悪い事は言わないから別のサイトでしよう
0194nobodyさん2013/10/07(月) 21:00:04.92ID:???
noticeだからログレベル弄るか非表示で問題なし
ちなみに内容は$_POSTに値が入ってないよって話
リクエストがPOSTか判定して分岐すれば

if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
echo $_POST['contents'];
}
0195nobodyさん2013/10/07(月) 22:10:00.87ID:???
>>193-194
ありがとうございます
詳しく説明されているサイトや本で勉強してみることにします
0196nobodyさん2013/10/07(月) 22:15:19.48ID:???
>>192

$personal_name = (isset($_POST["personal_name"])
? $_POST["personal_name"]
: NULL;
$contents = (isset($_POST["contents"])
? $_POST["contents"]
: NULL;
0197nobodyさん2013/10/07(月) 22:59:44.18ID:???
初心者はxampp使うな
0198nobodyさん2013/10/08(火) 03:04:11.49ID:???
>>195
消えろクズ
0199nobodyさん2013/10/08(火) 05:57:38.47ID:???
俺もついつい>>196のように書いちゃうんだけど
厳密にはissetで比較してるからnullじゃなくてfalse返したほうがいいよね
0200nobodyさん2013/10/08(火) 10:14:32.78ID:???
> noticeだからログレベル弄るか非表示で問題なし
E_ALLしたらゴミログで溢れるわ、
そも値がどういう前提で使われるのかわかりづらくて
運用時にトラブルシューティングしにくいから勘弁して欲しいすわ。
0201nobodyさん2013/10/08(火) 10:30:20.55ID:???
$isExistPersonalName = isset($_POST["personal_name"]);
なら条件判別用に使うbooleanでいいが、値取得ならnullまたは空文字が妥当でしょ
0202nobodyさん2013/10/08(火) 11:04:47.07ID:???
>>199
なんでfalse? よくわからない
0203nobodyさん2013/10/08(火) 12:19:26.92ID:???
クズクズうるせークズ
0204nobodyさん2013/10/08(火) 13:16:56.01ID:xqp9FA+C
今PHPでショッピングカート作ってるんですけど、カートに登録する情報の最低条件は
商品ID,個数,ユーザID くらいだとして、
ユーザーが会員登録していない・ユーザIDが存在しない状況のときはどうしたら良いんでしょうか
サイトにアクセスしたときに乱数発生させてクッキーに保存。それをIDとして代用するしかないですか?
そうするといろんなデバイスでカート情報を共有できなくなるのはあきらめるしかないんでしょうか

PHP固有の問題の質問じゃなくてすみません
0205nobodyさん2013/10/08(火) 13:25:26.67ID:???
if (isset($_POST['a'])) {
 $a = $_POST['a'];
} else {
 $a = null;
}

function aaa($a) {
0206nobodyさん2013/10/08(火) 13:34:15.73ID:???
無名関数について調べてたらたまたまisset使用してるコードが書いてたけどそこだとfalseになってんな。
もっともgetterで変数がセットされてたら返すという利用法で、$_POSTの時とは話が違うけど。
自分はnull使ったり、1以上の整数値が入ること想定してんなら0とか入れるかもしれないし、
文字列の場合空文字にする時もあるかな。
falseでも比較に支障はないけど違和感は感じるね。
0207nobodyさん2013/10/08(火) 13:34:39.65ID:???
カートとは別に、ログイン中かどうかを示すセッションあるやろ
「確定」ボタン押したときログイン中じゃなかったら一旦ログイン画面へ飛ばす
つまりカートにはユーザIDは不要
0208nobodyさん2013/10/08(火) 14:11:06.80ID:xqp9FA+C
>>207
ありがとうございます
1)カートの内容確認画面の「確定」ボタンを押してログインチェック
2)ログイン中ならユーザIDを持って決済実行
3)ログインしてなかったらユーザ登録ページに移動
って感じでしょうか

これはカート情報をDBに持たせるのではなくて全部ブラウザのクッキーもしくはセッションに持たせる前提ですか?
DBに持たせるとしたら、テーブルにユーザごとの固有のフィールド(クッキーまたはセッションに入れた乱数?)を
持たさなきゃだめですよね。よくあるページ上部の「カート:5商品」とかを実現するには。。
0209nobodyさん2013/10/08(火) 14:28:08.31ID:???
>>208
業者に作ってもらえ乞食
0210nobodyさん2013/10/08(火) 15:41:58.79ID:???
>>208
セッションに、カート丸ごと入れればいいじゃない。
0211nobodyさん2013/10/08(火) 16:12:37.78ID:???
>これはカート情報をDBに持たせるのではなくて全部ブラウザのクッキーもしくはセッションに持たせる前提ですか?
どこに持たせようがやることは同じだと思うのだが
0212nobodyさん2013/10/08(火) 16:42:12.77ID:???
>>211
cookieに持たせる場合とセッションに持たせる場合じゃ、やること違うでしょ
0213nobodyさん2013/10/08(火) 16:55:27.46ID:???
いや?情報の読み込ませ方が違うってだけでやることは同じ
0214nobodyさん2013/10/08(火) 17:03:32.06ID:???
初心者はレスするな
0215nobodyさん2013/10/08(火) 17:15:08.67ID:???
>>213
> 情報の読み込ませ方が違う
から、やることが違うって言ってるんだが。
抽象化されたデータ構造を受け取る設計になっているViewの場合なら、そのViewの処理は同じだろうが。
0216nobodyさん2013/10/08(火) 17:28:35.52ID:???
揚げ足取りとかいらないから
読ませるだけの違いをさも明確な違いだと言わんばかりに主張されても失笑するだけ
0217nobodyさん2013/10/08(火) 17:34:52.75ID:???
やることは同じ→処理内容的に同じことをしていく(読んでいじって書いて)
やることは同じ→使用する関数なんかが違うから同じじゃない
0218nobodyさん2013/10/08(火) 18:21:41.23ID:???
>>216
いや、そもそもcookeiとセッション(あるいはデータベース)では、根本的にデータをクライアント側で
保持するのか、サーバ側で保持するのかという違いがあるでしょ。

それを「読ませるだけの違い」っていっちゃうわけ?
0219nobodyさん2013/10/08(火) 18:27:17.59ID:???
データをサーバ側から出さない場合とクライアント側に出す場合じゃ、施すセキュリティ対策も変わってきたりするでしょ。
それに、cookieに保持するのであれば、PHPがいうセッションの期間だけを有効にするのか、あるいはそのセッションを超えて
(例えば3日とか)保持するとか、そういう設計の違いも出てくるし。
0220nobodyさん2013/10/08(火) 19:10:24.42ID:???
話が飛躍しすぎ
そこまで深い話をしてるわけじゃないのは見ればわかるだろ
0221nobodyさん2013/10/08(火) 19:48:19.33ID:???
質問
DBに持たせるとして、よくあるページ上部の「カート:5商品」とかを実現するには、
テーブルにユーザごとの固有のフィールド(クッキーまたはセッションに入れた乱数?)を
持たさなきゃだめですよね?

答え
いいえ
DB+クッキーでセッションを実現する場合は必要ですが(わかってると思うがIPはだめ)
PHPのセッションを使う場合についてはその限りではありません
PHPのセッションを使うとサーバ側に固有IDを持つファイルが生成されその中に情報入れていきます
クライアント側は固有IDと紐つけるためにクッキーを食べさせられます
DB+クッキーでやろうとしてることを勝手にやってくれる仕組みです
自前のセッションを構築したいという強いこだわりがないのならPHPのセッションを使いましょう
ちなみに自前でセッションを構築するのはいろんな意味で危険なのでおすすめしません
0222nobodyさん2013/10/08(火) 20:19:28.41ID:???
クライアント側のセッション情報はデフォルトではクッキーだけどhiddenやurlに含ませることもできる
ベストなのはクッキーだけどね
ひろみつがクッキー食えないのドコモ茸とかネタでやってたけど
今はもうその問題も解消されてるのかな?
02231/42013/10/08(火) 21:08:40.33ID:5MYNYfSx
【OS名】windows7 64bit home
【PHPのバージョン】PHP/5.4.7
【連携ソフトウェア】MySQL
【質問内容】
文字コードがEUC-JPのhtmlを読み込み、xmlに変換したいのですが下記エラーがでてうまくいきません。どなたかお助けを。
Warning: DOMDocument::loadHTML(): ID top already defined in Entity, line: 73 in xxx\test.php on line 5
Warning: DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity, line: 93 in xxx\test.php on line 5
Warning: DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity, line: 132 in xxx\test.php on line 5
Warning: DOMDocument::loadHTML(): Unexpected end tag : b in Entity, line: 288 in xxx\test.php on line 5
Warning: DOMDocument::loadHTML(): Unexpected end tag : b in Entity, line: 292 in xxx\test.php on line 5
Warning: DOMDocument::loadHTML(): Unexpected end tag : b in Entity, line: 296 in xxx\test.php on line 5
Warning: DOMDocument::loadHTML(): Unexpected end tag : b in Entity, line: 300 in xxx\test.php on line 5
Warning: DOMDocument::loadHTML(): Unexpected end tag : b in Entity, line: 304 in xxx\test.php on line 5
Warning: DOMDocument::loadHTML(): Unexpected end tag : b in Entity, line: 308 in xxx\test.php on line 5
02242/42013/10/08(火) 21:09:13.02ID:5MYNYfSx
Warning: DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity, line: 330 in xxx\test.php on line 5
Warning: simplexml_load_string(): Entity: line 3: parser error : Attribute xmlns redefined in xxx\test.php on line 7
Warning: simplexml_load_string(): <html xmlns="http://www.w3.org/1999/xhtml"; xmlns="http://www.w3.org/1999/xhtml"; in xxx\test.php on line 7
Warning: simplexml_load_string(): ^ in xxx\test.php on line 7
Warning: simplexml_load_string(): Entity: line 3: parser error : Attribute xml:lang redefined in xxx\test.php on line 7
Warning: simplexml_load_string(): html" xmlns="http://www.w3.org/1999/xhtml"; xml:lang="ja" lang="ja" xml:lang="ja" in xxx\test.php on line 7
Warning: simplexml_load_string(): ^ in xxx\test.php on line 7
02253/42013/10/08(火) 21:09:46.30ID:5MYNYfSx
コードです
<?php
$html = file_get_contents('http://www.dixe.net/modules/smartsection/item.php?itemid=23');
//libxml_use_internal_errors(true); //エラー回避用
$domDocument = new DOMDocument();
$domDocument->loadHTML($html);
$xmlString = $domDocument->saveXML();
$xmlstr = simplexml_load_string($xmlString);
?>
02264/42013/10/08(火) 21:10:28.00ID:5MYNYfSx
$html = preg_replace('#/#', '', $html);
と";"を置換してもダメでした。なにかいい方法ありますか?
0227nobodyさん2013/10/08(火) 21:28:47.28ID:4t+2own2
73: <link href="http://www.dixe.net/favicon.ico"; rel="SHORTCUT ICON" />
74: <link rel="icon" href="http://www.dixe.net/favicon.gif"; type="image/gif" >
75: <link rel="stylesheet" type="text/css" media="all" href="http://www.dixe.net/common.css"; />
0228nobodyさん2013/10/08(火) 21:32:19.80ID:4t+2own2
あれ、ごめん。なんでもない
0229nobodyさん2013/10/08(火) 23:56:18.52ID:bxnPZOzZ
今日レビューで見かけて驚いたコード

$isHogeHoge() ? echo 'エラーです' : redirect('/hogehoge/success'); // 当然返り値を受け取ったりはしてない

指摘したら「(俺)さんはCとかJavaの人間だからwPHPでは普通ですよw」みたいなこと言われて動揺してそれ以上聞けなかったんだが・・
実際のとこどうなのかおしえてくれ。
0230nobodyさん2013/10/09(水) 00:02:24.32ID:???
レビューあるのにコーディング規約ないの?
規約に反するならちゃんと指摘しないと
0231nobodyさん2013/10/09(水) 00:07:18.43ID:???
入れ子禁止くらいはあったと思うがそんな厳密な規約はないっす。
つうか「三項演算子でエコー、リダイレクト禁止」みたいな規約があったらむしろ決めた人の感覚を疑うw
0232nobodyさん2013/10/09(水) 00:13:08.49ID:???
いやいやそんな規約じゃなくて単に可読性落ちるから指摘していいやん
0233nobodyさん2013/10/09(水) 00:27:00.76ID:???
指摘したら「PHPでは普通です。見やすいですよね」みたいに言われたからほんとに一般にそうなのか聞きたいんす
0234nobodyさん2013/10/09(水) 00:59:20.60ID:3/AePGfa
>>223は解決しました。多分別のところが問題でした。>>227-228さん、ありがとうございました。
それでまた別の質問なんですが

【OS名】windows7 64bit home
【PHPのバージョン】PHP/5.4.7
【連携ソフトウェア】MySQL
【質問内容】
以下のコードで文字化けしてしまいます。
どこが悪いのでしょうか。
結果はこうなります。
http://www.dotup.org/uploda/www.dotup.org4565282.jpg

<?php
$str=( '<html><body>123abcあいう</body></html>');
$dom = new DOMDocument();
$dom->loadHTML($str);
$xml = $dom->saveXML();
$xmlmain = simplexml_load_string($xml);
var_dump( $xmlmain->body);
?>
0235nobodyさん2013/10/09(水) 02:02:20.24ID:???
じじいの俺も未だ三項演算子にやはり抵抗はあるな。ifelse書く
javascript内で見かけたらクライアント側に送るデータ少なくしたいんだなとは思うけど

返値が同じ型や似たような値・処理内容が同じような命名規則の関数の羅列
の場合だと使うかな?  とか思ったけど、やはり自分基本三項演算子自体を使わないから意見出すのはやはり間違ってるなと思って黙っとく
0236nobodyさん2013/10/09(水) 04:25:31.97ID:???
普通ではないけどやってることはif-else文と同じでしょう
別に驚きはしないけど自分はやらないよ
三項演算子を使うのは基本変数のセットぐらい>>196
あれをif-elseでやると$_POST $_GETが多いほど長ったらしくなるからね
0237nobodyさん2013/10/09(水) 05:00:41.78ID:???
>>229
>$isHogeHoge()

可変関数使ってるの?
02382352013/10/09(水) 05:06:21.42ID:???
$isHogeHoge() ? echo 'エラーです' : redirect('/hogehoge/success');
$isIogeIoge() ? echo 'エラーです' : redirect('/hogehoge/success');
$isJogeJoge() ? echo 'エラーです' : redirect('/hogehoge/success');
$isKogeKoge() ? echo 'エラーです' : redirect('/hogehoge/success');
$isLogeLoge() ? echo 'エラーです' : redirect('/hogehoge/success');
・・・

こんなかんじだったらやる かもしれんnu?
02392352013/10/09(水) 05:09:24.45ID:???
いやねえなw
助長だわなすまね
0240nobodyさん2013/10/09(水) 05:11:33.01ID:???
クロージャーかもしれない
0241nobodyさん2013/10/09(水) 06:48:49.94ID:???
>>234
DOMDocument#loadHTML() はHTMLから文字エンコーディングが判別できない場合は
ASCII互換として処理するみたいだがこれが原因だな
loadHTML() する前に mb_convert_encoding($html, ''HTML-ENTITIES', '$htmlのエンコーディング'); で
非ASCII文字を数値文字参照に変換してしまうのが楽そうだ
0242nobodyさん2013/10/09(水) 12:58:52.60ID:???
三項演算子 と if 文 を比べてるやつはドシロート
三項演算子 は 文 じゃなくて 式
恥ずかしいぞ
0243nobodyさん2013/10/09(水) 13:15:36.96ID:???
>>192

<?
$personal_name = isset($_POST["personal_name"]) ? $_POST["personal_name"] : NULL;
$contents = isset($_POST["contents"]) ? $_POST["contents"] : NULL;
if ($personal_name && $contents) {
 echo "<p>投稿者:{$personal_name}</p>\n";
 echo "<p>内容:</p>\n";
 echo "<p>{$contents}</p>\n";
}
0244nobodyさん2013/10/09(水) 15:00:54.87ID:???
>>242
自己紹介乙
0245nobodyさん2013/10/09(水) 15:01:09.70ID:???
>>243

<?php
$personal_name = isset($_POST["personal_name"]) ? $_POST["personal_name"] : NULL;
$contents = isset($_POST["contents"]) ? $_POST["contents"] : NULL;
if (trim($personal_name) && trim($contents)) {
 echo
  "<p>投稿者:{$personal_name}</p>\n" .
  "<p>内容:</p>\n" .
  "<p>{$contents}</p>\n";
}
0246nobodyさん2013/10/09(水) 15:08:06.66ID:???
恥ずかしいから終わった話題をぶり返すな
0247nobodyさん2013/10/09(水) 17:47:19.90ID:???
>三項演算子 は 文 じゃなくて 式
この言葉はif文と比べてないと出てこないんだけどwwwww
0248nobodyさん2013/10/09(水) 18:26:51.67ID:i4X3kT9V
変数の値設定に三項使って長々と書くようならデフォルト設定しておいて
改めて例外を上書きした方が見やすく問題も起きにくい

俺は最終段階でわざわざ余計な変数使いたくないような時にしか使わん
まあphpなんか使うことはないがな
0249nobodyさん2013/10/09(水) 18:53:45.73ID:???
>>247
おまえ白痴だろ?
0250nobodyさん2013/10/09(水) 18:55:14.36ID:???
>>246
恥ずかしいから、まずはとりあえずパンツを履け
それから一度家の外に出て外気を吸え
0251nobodyさん2013/10/09(水) 18:59:41.43ID:???
>>248
まぁ、おまえはどんな言語でも使えないがな
0252nobodyさん2013/10/09(水) 19:00:59.32ID:???
馬鹿だからなwww
0253nobodyさん2013/10/09(水) 19:40:38.43ID:0jpqnncd
phpinofoを見ると

Configuration File (php.ini) Path が C:\Windows なのに

Loaded Configuration File が C:\pleiades\xampp\php\php.ini

になってるんですが、
これはどこに書かれてある設定が効いているのでしょうか?

なお、httpd.conf に PHPIniDir の記述はありませんし、
Windows環境変数Pathの中にも、それらしい記述はありませんでした。
0254nobodyさん2013/10/09(水) 19:42:23.94ID:???
代用足りうる使い方ができるのに三項演算子とif文を比較するなってほうが無理がある
0255nobodyさん2013/10/09(水) 20:32:06.19ID:???
>>253
http://www.php.net/manual/ja/configuration.file.php
0256nobodyさん2013/10/09(水) 20:50:52.97ID:???
>>254
まずは日本語のお勉強からはじめましょうね
0257nobodyさん2013/10/09(水) 21:01:12.13ID:???
>>238
echoは使えません。
0258nobodyさん2013/10/09(水) 21:41:38.76ID:???
馬鹿丸出しだな >>238
三項演算子が "演算子"、"式" ってことが理解できてないからこんなアホなことを平気で書く
if文で代用とか言ってる馬鹿と同じ
02592352013/10/10(木) 01:09:23.38ID:???
>>258
>>229
わかったわかったあーめんどくせえ

<?php
$isstatus = true;
$isstatus ? print('エラーじゃないです'):print('偽です');
0260nobodyさん2013/10/10(木) 01:46:04.58ID:???
isstatus w
0261nobodyさん2013/10/10(木) 02:44:44.65ID:???
カスタマイズが楽なオープンソースのショッピングカート知らない?
EC−○UBE疲れたお・・・
0262nobodyさん2013/10/10(木) 03:15:58.11ID:???
>>259
めんどくさいなら書き込まなくていいよ^^
スレが汚れるだけだから^^
示威か自慰ならブログでやってね^^
0263nobodyさん2013/10/10(木) 07:30:43.00ID:???
>>258
結果に辿りつく手段に固執してるほうがよほどバカ
0264nobodyさん2013/10/10(木) 16:05:48.85ID:l0x7pgcK
PHPUnitでテストを書き始めているんですが、
これは1ファイルには1テストクラスでしょうか?
複数のクラスを定義すると、先頭の1つしかテストされません。
テストスイートを定義する必要があるのかと思いましたが
複数のファイルからスイートを作成するので、1ファイル1クラスが原則のようにも思われました。

以下のように1ファイル内のテストを分類してる(したい)のですが、
このままPHPUnitでテストすることはできませんか?

// FooTest.php -- Fooクラスをテストするファイル
// method1メソッドのテスト
class FooMethod1Test extends PHPUnit_Framework_TestCase {}
// method2メソッドのテスト
class FooMethod2Test extends PHPUnit_Framework_TestCase {}
0265nobodyさん2013/10/10(木) 16:20:18.29ID:l0x7pgcK
もしかすると実行環境に依存するかもしれないので追記しておきます
現時点ではWindowsのコマンドプロンプトでテストをおこなっており、
次のコマンドで実行しています
phpunit FooTest
0266nobodyさん2013/10/10(木) 17:17:35.74ID:l0x7pgcK
どうも現時点では1ファイル1テストクラスが原則のように思われるため
素直にファイルを分割し、スイートを作成することにしました。
解決せず作業進めちゃいますが、
もしファイル内に複数のテストクラスでやってるよって人がいたら
声かけてもらえるとうれしいです
でわでわ
0267nobodyさん2013/10/10(木) 23:08:41.32ID:???
>>264
試してないからはっきりとは言えないけど
https://github.com/sebastianbergmann/phpunit/blob/master/PHPUnit/Runner/TestSuiteLoader.php#L60-L64
APIがこうなってる以上無理じゃないかな

> 複数のファイルからスイートを作成するので、1ファイル1クラスが原則のようにも思われました。
それもそうだし、
下手に分割するとリファクタリング時のメソッド統廃合で困らないかい?
0268nobodyさん2013/10/11(金) 04:23:46.97ID:jgQ61xJw
エラー処理がうまくできないです、どなたかお助けを・・・
以下のコードだとcatch節にいかずに
Warning: file_get_contents(存在しないURL): failed to open stream: No such file or directory in xxx\test.php on line 3
と出力されます。何故でしょうか。

<?php
try {
$html = file_get_contents('存在しないURL');
echo $html;
} catch (Exception $e) {
echo $e;
}
?>
0269nobodyさん2013/10/11(金) 05:40:07.55ID:???
>>268
PHPのエラーと例外は別物
同列として扱いたいならエラーハンドラから投げよう
http://www.php.net/manual/ja/class.errorexception.php
0270nobodyさん2013/10/11(金) 06:18:29.15ID:PQt/MpLB
【OS名】windows7
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL
【質問内容】

正規表現の
preg_match_allであるサイトのソースを解析した際に
どうしてもマッチ出来なかったため、ソースの一部をstr_replaceで改変すると
マッチしました

コード例
preg_match_all('/<div id="null_.+?".+?name."(.+?)">(.*?)<div id="null_/s',$txt,$result);
※$txt内に<div id="null_〜<div id="null_が25個ぐらい存在
このコードだと20個以降マッチングしない

$txt=str_replace('<div id="nul_','kokohenkou',$txt);
として、preg_match_all('/'kokohenkou.+?".+?name."(.+?)">(.*?)'kokohenkou/s',$txt,$result);
するとすべてマッチングする

今まで経験則からstr_replaceしてからpreg_match_all使ってましたが
こういう動作をするのはなぜでしょうか?
0271nobodyさん2013/10/11(金) 06:25:51.85ID:jgQ61xJw
>>269
なるほど、そういうことでしたか
ありがとうございました。
0272nobodyさん2013/10/11(金) 06:32:40.19ID:???
>>270
改行がある場合は
.+?を
[/s/S]+?
とする
修飾子をuにする
0273nobodyさん2013/10/11(金) 07:11:51.37ID:???
>>255
ありがとうございます。
なるほど、Configuration File (php.ini) Path には
C:\Windows しか記載されていませんが、
実際はデフォルトで特定のパスを読み込んでるんですね。
0274nobodyさん2013/10/11(金) 09:02:12.68ID:jgQ61xJw
http_post_data()が見つからない、と出るのですが、incluede等必要なんでしょうか?
index.phpは存在します。

<?php
echo apache_get_version();
http_post_data('index.php');
?>

エラーコードです。
Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7
Fatal error: Call to undefined function http_post_data() in xxx\test.php on line 3
0275nobodyさん2013/10/11(金) 09:32:38.16ID:???
>>274
http://www.php.net/manual/ja/function.http-post-data.php
> (PECL pecl_http >= 0.1.0)

pecl_http が入ってないんでしょう
0276nobodyさん2013/10/11(金) 10:02:19.30ID:jgQ61xJw
>>275
ありがとうございます!
0277nobodyさん2013/10/11(金) 10:55:00.59ID:/Nhu1Y1V
商品を検索してJSONで返すプログラムを書いているのですが
商品が見つからなかった場合、HTTPステータスで404を返すべきでしょうか?
0278nobodyさん2013/10/11(金) 10:58:22.22ID:6ra1/Oru
404のエラーコードの意味は・・・
0279nobodyさん2013/10/11(金) 11:03:15.51ID:???
返すべきじゃない
ドキュメントがないわけじゃないし
受理はされてJSON返してんだから200じゃない
0280nobodyさん2013/10/11(金) 11:21:03.37ID:???
googleで検索結果返ってこないクエリいれて試してみればよかったのに
0281nobodyさん2013/10/11(金) 11:27:00.76ID:/Nhu1Y1V
>>278-280
ありがとうこざいます
200を返してJSON内に結果を記述するようにします
02821/22013/10/11(金) 12:31:27.07ID:SK3emKdr
フォームからPOSTするとレスポンスが返ってくるのですが、ajaxでPOSTしても返ってこないのは何故でしょう
ヘッダ、POSTが同じでステータスは200OKなんですがajaxのPOSTではレスポンスが返ってこないのです。


<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Language" content="ja">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<script src="http://code.jquery.com/jquery-2.0.3.min.js";></script>
<script src="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.js";></script>
<script src="js/jquery-ui-1.10.3.custom.min.js"></script>
<script src="js/jquery.socialbutton-1.9.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#search2").bind("change", function(){
alert( encodeURI($("#search2").val()));
$.ajax({
beforeSend: function(req) {
req.setRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
},
contentType :'application/x-www-form-urlencoded',
type : "POST",
02832/22013/10/11(金) 12:33:43.03ID:SK3emKdr
url : 'http://jlp.yahooapis.jp/MAService/V1/parse',
data : "appid="+encodeURI('dj0zaiZpPWFDOTJPS2FCeUwwRiZzPWNvbnN1bWVyc2VjcmV0Jng9MGU-')+'&'+
"sentence="+encodeURI($("#search2").val())+'&'+
"filter="+encodeURI('9'),
success: function(msg,xml){
alert( msg);
},
error:function(XMLHttpRequest, textStatus, errorThrown){
alert( 'error'+textStatus );
} }) }); });
</script></head>
<body><form action="http://jlp.yahooapis.jp/MAService/V1/parse"; method="post">
<input type="text" name="appid" value="dj0zaiZpPWFDOTJPS2FCeUwwRiZzPWNvbnN1bWVyc2VjcmV0Jng9MGU-">
<input type="text" name="sentence" id="search2" value="12345">
<input type="text" name="filter" value="9">
<input type="submit" value="送信する"></form></body></html>

デベロッパーコード+ヤフーIDは実験用に取ったものなので、どうなっても大丈夫です。
0284nobodyさん2013/10/11(金) 13:24:12.87ID:???
でなんでその質問をPHPスレで聞こうと思ったの?
0285nobodyさん2013/10/11(金) 13:26:22.80ID:6ra1/Oru
jqueryかこれw
postの返り値とかって、chromeで見れなかったっけ
0286nobodyさん2013/10/11(金) 13:31:43.43ID:???
激しくスレチだがたぶんここが原因だから教えてやんよ
parseappid=〜→parse?appid=〜
02872862013/10/11(金) 13:35:21.27ID:???
あ、いやなんでもないpostか
0288nobodyさん2013/10/11(金) 13:44:01.53ID:???
クロスドメイン制限にかかってんだろ
0289nobodyさん2013/10/11(金) 15:04:16.89ID:HtFFGZ+p
ajaxリクエストにエラー返すときどうやるのが正しいの?
自分は500返してるけど何かちがうっぽい
0290nobodyさん2013/10/11(金) 15:52:21.83ID:???
日本語でおk
■ このスレッドは過去ログ倉庫に格納されています