【PHP】下らねぇ質問はID出して書き込みやがれ 139©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん 転載ダメ©2ch.net
2015/01/05(月) 15:56:07.51ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 138
http://kanae.2ch.net/test/read.cgi/php/1414427135
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.5
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0002nobodyさん
2015/01/05(月) 15:57:02.81ID:???http://peace.2ch.net/test/read.cgi/tech/1418738547/
関連リンク
■本家マニュアル http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル http://pear.php.net/manual/ja/
■メーリングリスト http://ml.php.gr.jp/mailman/listinfo/
■ZFマニュアル http://framework.zend.com/manual/ja/
■Smartyマニュアル http://www.smarty.net/manual/ja/
(以下英語)
■Zend本家 http://www.zend.com/
■Zend Framework http://framework.zend.com/
■php | architect http://www.phparch.com/
■Smarty http://www.smarty.net
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
0003nobodyさん
2015/01/05(月) 15:57:32.41ID:???1.文字コードは何を使えばいいの?
→1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
→ http://example.com/が例文などのために予約されている。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
→ Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
→ 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
→ {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
→ cronかタスクスケジューラを使え。
7.extractって危険なの?
→変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
→ URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
→ .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
10. そもそもインストールの時点でうまくいかない
→ 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
0004nobodyさん
2015/01/05(月) 15:58:08.26ID:???→ データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
→ ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
→ 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
→ よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
15. クッキーの情報をユーザから隠したい
→ セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
→ strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
→ まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
→ C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(http://〜とか)を扱う際の限界
→ fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
→19.を参照
21. 画像処理一般 or GDの限界
→ ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
→ 好きにしてください
0005nobodyさん
2015/01/06(火) 15:55:17.71ID:???病気でしょうか?
0007nobodyさん
2015/01/07(水) 11:46:08.59ID:???0008nobodyさん
2015/01/07(水) 11:52:18.20ID:???今後は、他質問サイト等をご活用ください。
0009nobodyさん
2015/01/07(水) 13:39:48.78ID:???0010nobodyさん
2015/01/07(水) 16:24:07.12ID:???0011nobodyさん
2015/01/07(水) 18:04:41.04ID:HTxb5ePJttp://codepad.org/yVnMfKj7
出力したファイルをそのままもう一度処理にかけるとバイト数が元に戻り、文字化け等が無いんですが、
C++のifstreamでは下がったバイト数分しか読み込まれず、パース出来ません
日本語のせいかとも思いましたが、「あ」*1000文字のファイルでも「a」*1000文字のファイルでもファイルサイズが下がりました
0013nobodyさん
2015/01/07(水) 18:20:39.09ID:???> //ASCIIコードの適当な文字と排他演算させる
の意味が良くわからんけど、手元で実行したらファイルサイズは変わらなかった。
aaa.dat -> bbb.dat -> ccc.datと変換。
-rw-rw-r-- 1 1000 1月 7 20:18 2015 aaa.dat
-rw-rw-r-- 1 1000 1月 7 20:19 2015 bbb.dat
-rw-rw-r-- 1 1000 1月 7 20:19 2015 ccc.dat
0014nobodyさん
2015/01/08(木) 11:21:10.84ID:pml5LpVDUTF-8でやってるんですが、文字のバイト数を定めるコードまで書き換わってるんでしょうか
0015nobodyさん
2015/01/08(木) 11:44:03.53ID:pml5LpVDファイルの転送方法を自動->バイナリにしたら普通にできました
ありがとうございました
0016nobodyさん
2015/01/11(日) 02:13:41.14ID:228RDm1SsetOutputModeをHTML5の設定にしたけど、パースの際に
metaなど閉じタグ不要の要素に、スラッシュがないと怒られる。
こういう仕様なの?
それとも正しくHTML5に設定できてなくてXHTMLの形式でパースされてるのかな?
構成
FuelPHP1.7.2
PHPTAL1.3.0
001716
2015/01/11(日) 02:52:39.38ID:228RDm1SsetOutputModeの意味を理解してませんでした・・・。
0018nobodyさん
2015/01/12(月) 01:00:37.32ID:fqM0hwsAどうしても納得出来ない箇所あるから誰かわかりやすく教えて
http://phpbook.e1blue.net/perfect/index7_Router.html
サイトに大体のコード書いてあるけど、わからないのは一箇所だけ。
Routerクラスのif (preg_match('#^' . $pattern . '$#', $path_info, $matches)) って所なんだけど
格納されてる文字列が$path_infoより$patternのほうが長いって、マッチングできなくないの?
0019nobodyさん
2015/01/12(月) 10:56:18.38ID:???つまり、$patternの方が短くなければならない。
$patternは、$this->routesの中身によるから、$this->routesの中身がどうな
っているか検証したほうがいい。
もっとも、そこのコードは複雑でわかりづらいけど。
あるいは、どうしても知りたいなら、実際に動かすといい。
foreach ($this->routes as $pattern => $params) {
if (preg_match('#^' . $pattern . '$#', $path_info, $matches)) {
$params = array_merge($params, $matches);
return $params;
}
}
0020nobodyさん
2015/01/12(月) 11:16:11.64ID:fqM0hwsAやっぱりそうだったのか。
じゃあ例えば
RequestされたURLが
http:/example/foo/bar/status/list
ルーティング定義配列(compileRouteメソッド変換済み)が
/status/list
とかだった場合、
$path_info = '/list';
$pattern = '/status/list';
になるはず。
だから$path_infoより$patternのほうが短くないとけないはずなのに
if (preg_match('#^' . $pattern . '$#', $path_info, $matches))
はtrueにはどうしてもならないと思うんだけど。
0021nobodyさん
2015/01/12(月) 11:33:29.78ID:fqM0hwsA個々のアプリによって定義するルートが違うとかで、アプリを作る段階にならないと詳細にはわからない。
『それでもとりあえず$pattenのほうが$path_infoよりも長くなるなんて、まずpreg_match関数が機能しないと思う』
とさっきまで考えていたんだが、書いてる途中で少しなにかに気がついた。
ルーティング定義連想配列のキー値は「PATH_INFO」で
そのキー値だけを正規表現に変換するのがcompileRoutesメソッド。
そして変換済みのルーティング定義配列(現ルーティングパラメータ)を
$path_infoとマッチングを行うのがresolveメソッド。
その中でif (preg_match('#^' . $pattern . '$#', $path_info, $matches))
というルーティングパラメータのキー値($pattern)と$path_infoをforeachでまわす処理が出てくるが、
マッチすれば値をマージして返す。
結局resolveメソッドで何がしたいかというと、ルーティングパラメータのキー値をキャプチャした$matchesでマージして
それを返したいだけ。
ってところまで理解できた。
フレームワークのRtouterクラスの理解はこの程度にしておいて、実際にアプリ作る段階で
ルーティング定義配列作ると思うから、そこで実際の値の動きを追って理解しようとお思う。
0022nobodyさん
2015/01/12(月) 12:42:08.78ID:???あとは比較的簡単だよ。
一通り終えてそこに戻れば完全に理解できるかも。
Routerクラスは複雑過ぎて、俺にはイマイチわからなかったけど。
0023nobodyさん
2015/01/12(月) 16:14:53.77ID:fqM0hwsA>>22の言う通り最後の方まで処理追っかけて読んでみるよ。
さんくす。
0025nobodyさん
2015/01/16(金) 18:50:33.50ID:2SMs2buE文字として格納されている$a[0]="6B"を
ビット否定で反転して再び文字列として$a[0]に"94"という形で入れたいのですがどうすればいいですか?
$a = ~intval($a, 16);
$a = dechex($a);
$a = substr($a, 6, 2);
適当にやってたらこれで出来ましたが全然スマートじゃないのでご教授お願いします。
0026nobodyさん
2015/01/16(金) 19:51:28.76ID:???0029nobodyさん
2015/01/16(金) 22:43:51.09ID:???6Bを2進数にすると1101011
これをbit否定で反転すると0010100
10100は16進数で14
>>25はbit否定で反転した1111....1110010100となった時の下位8桁以上を含んでいる
これをbit否定で反転するには6Bの桁数を取得して、左シフトとビット和を使って1で埋めた値をXOR演算で反転すれば良い
カラーコードの16進数として色を反転させたかったら
dechex(hexdec('FF') - hexdec('6B'));
とすればいい。でもこれはbit否定の反転なんて言わん
0030nobodyさん
2015/01/16(金) 22:46:07.52ID:2SMs2buEwindowsの電卓で6BにNOTするとFFFFFFFFFFFFFF94だったので
FFでANDすると94と思った数字になったんですが
これをPHPですると$a = dechex(~hexdec($a)); $a &= 0xFF;
としても0にしかなりません・・・
0031nobodyさん
2015/01/16(金) 22:49:47.64ID:???電卓のその結果は正しい
普通はそれでフラグを管理したりする
FFFFFFFFFFFFFF94という値を使わずにsubstr()して何故か94だけ取得してるのがおかしい
0033nobodyさん
2015/01/17(土) 02:30:14.09ID:???>>30
dechexは int->16進数表記文字列だ ソレに 0xFF の論理和とってどーすんだよ。
0034nobodyさん
2015/01/17(土) 02:31:07.45ID:???0035nobodyさん
2015/01/17(土) 10:35:28.17ID:???0036nobodyさん
2015/01/18(日) 01:07:07.39ID:t9lQSBuq地域選択ですが優れたUIのサイトを御存じの方いらっしゃいませんか?
日本-東京-上野
というように複数階層で選択してもらうのですが、いまいちしっくりくるUiが浮かびません。
3階層か4階層なのにいい感じにまとまっているサイトを御教授ください。
すみませんが、宜しくお願い致します。これでもう2週間くらい考えていますが、私の腐った頭ではアイディアが浮かびません。
0037nobodyさん
2015/01/18(日) 08:29:39.97ID:???0039nobodyさん
2015/01/19(月) 19:58:08.23ID:???この掲示板の住人は>>37>>38のように無能だけだよ
センスが問われる質問をこの無能達にしても仕方がない
いくらかかっても良いから自力で考えた方が遥かに良いだろう
0040nobodyさん
2015/01/19(月) 20:05:02.47ID:???0041nobodyさん
2015/01/20(火) 22:36:40.06ID:???こっちでは回答しないよ。
0042nobodyさん
2015/01/21(水) 00:45:04.08ID:???0043nobodyさん
2015/01/21(水) 19:22:41.15ID:???死ねよ
0044nobodyさん
2015/01/23(金) 21:14:09.03ID:hqqvifMFPHPのようなWebシステムにおいてdispatherっていうのはどういう役割を担うものなのでしょうか?
フレームワークとかでよく見るのですがいまいちよくわかりません
0045nobodyさん
2015/01/24(土) 00:33:02.50ID:???マルチスレッドのほうはスレッドの振り分けで、PHPのフレームワークではリクエストによって処理を振り分け。
意味が違う。
0046nobodyさん
2015/01/24(土) 00:49:53.53ID:???004744
2015/01/24(土) 06:43:22.49ID:/NxVsKku意味が違うものだったのですね
すっきりしました
ありがとうございます
0048nobodyさん
2015/01/25(日) 16:15:26.61ID:smE8X9qk他の無料ブログからインポートした記事が大量にあって、記事IDと画像の紐付けが難しいため
記事本文から一番最初の画像をpreg_match_allで抜き出そうとしたところ
一番最初ではなく、一番最後の画像が抜き出されてしまいます
preg_match_allの使い方が間違っている気がするのですが、ご助言いただけますでしょうか
$img_dir_url = home_url().'/wp/wp-content/uploads/';
$pattern = '/<img.+src=[\'"]'.preg_quote($img_dir_url,'/').'([^\'"]+)[\'"].*>/i';
$string = get_the_content();
if ( preg_match($pattern,$string) ) {
$images = preg_match_all($pattern, $string, $matches);
echo $images[1][0];
}
0049nobodyさん
2015/01/26(月) 05:20:13.27ID:???$image[1][0]に文字列が入ってるのもよくわからんけど
とりあえず$matchesに結果が収まってるからechoするならこっちでしょう
0050nobodyさん
2015/01/26(月) 05:40:05.61ID:???http://peace.2ch.net/test/read.cgi/tech/1418738547/
005148
2015/01/26(月) 06:34:44.15ID:???すみません、質問箇所を抜き出す際に余分な記述を整理していて間違えましたが
正しくは「echo $matches[1][0];」でした
$img_dir_url = site_url().'/wp-content/uploads/';
$pattern = '/<img.+src=[\'"]'.preg_quote($img_dir_url,'/').'([^\'"]+)[\'"].*>/i';
$string = get_the_content();
if ( preg_match($pattern,$string) ) {
$images = preg_match_all($pattern, $string, $matches);
echo $matches[1][0];
}
上記をテストしてみましたが、$matchesに含まれる要素は下記の二つのみでした
一番最初に挿入された画像を取得したいのですが、何故一番最後になってしまうのか……うーん
$matches[0][0] →記事本文全文
$matches[1][0] →記事本文中で一番最後に挿入された画像ファイル名
>>50
プログラム板にも同様のスレがあったの気がつきませんでした
今後参考にします
0052nobodyさん
2015/01/26(月) 06:46:41.86ID:???状況から見て最短マッチじゃなくて最長マッチになっているんだろうな
005348
2015/01/26(月) 08:40:49.20ID:???なるほど、$stringの記事本文を変えてテストしてみたらそれっぽいですね
$matches[0][0]に入っているのは記事全文は勘違いで「<img src="〜」から記事の文末まででした
もう一度正規表現から勉強し直して見直してみます
貴重なヒントありがとうございます
0054nobodyさん
2015/01/26(月) 08:49:01.58ID:???0055nobodyさん
2015/01/26(月) 14:01:02.90ID:???0056nobodyさん
2015/01/26(月) 18:22:05.82ID:???(д`* )
(⊃⌒*⌒⊂)
/_ノωヽ_)
005748
2015/01/26(月) 22:47:47.48ID:???ありがとう〜!
最初の+を+?にしたら無事に1番目の画像が取得できるようになりました、感謝
.*のところも見直した方がいいのかな?と思って外してみたけど
画像が取得できなくなって???なので元のままにしておきました
正規表現まだまだ手探り状態なんで勉強しないとな
0058nobodyさん
2015/01/27(火) 08:52:30.07ID:???投稿記事がどこから始まるかっていうのは法則があるだろうし
ソース抜き出す正規表現絡みの質問多いけどもっとみんなDOMやればいいのに
0059nobodyさん
2015/01/27(火) 15:24:26.49ID:???0060nobodyさん
2015/01/27(火) 23:10:57.91ID:???A→B→Cと遷移したとき
Cにいる状態でブラウザの戻るボタンを押したら
BをとばしていきなりAに遷移するような
仕組みにしたいんですが
どうしたらいいですか?
0061nobodyさん
2015/01/27(火) 23:55:11.26ID:???Bでなんらかの値を確認して妥当ならC、無効ならAにリダイレクト
あとこっちを使いなさい
↓
【PHP】下らねぇ質問はここに書き込みやがれ [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1418738547/
0065nobodyさん
2015/01/28(水) 07:08:09.40ID:???ローカルルールも読めないのか?
荒らしがいないときは基本こっちを使うべき>>2にも書いてんだろ
0066nobodyさん
2015/01/28(水) 08:07:42.52ID:???0067nobodyさん
2015/01/28(水) 08:11:41.16ID:???0068nobodyさん
2015/01/28(水) 08:25:32.44ID:???0069nobodyさん
2015/01/28(水) 08:34:13.27ID:???質問に回答もせず荒らすことだけしか考えてない輩がいるからこのスレは終了な
以後、このスレで質問しても荒らしの自演と見做されるので
質問者は
【PHP】下らねぇ質問はここに書き込みやがれ [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1418738547/
で質問しましょう
あと、このスレでの質問=荒らしなので回答はやめましょう
0070nobodyさん
2015/01/28(水) 08:42:18.14ID:???0071nobodyさん
2015/01/28(水) 09:00:33.46ID:???0073nobodyさん
2015/01/28(水) 22:43:51.48ID:oxIdnnOu一応、こちらでも事前に調べてみましたがJavaScriptでボタンを非表示にする方法が
あったのですがブラウザ側でJavaScriptを無効にしてた場合に連打されたらまずいなと思い
php側で何か対処法が知りたくてこちらで質問させていただきました。
0075nobodyさん
2015/01/28(水) 23:52:03.61ID:???0076nobodyさん
2015/01/29(木) 02:07:05.50ID:???>>74のようにJavascriptを使用できるブラウザじゃないと操作できないようにするとか、
ユニークなID埋め込んで同IDでPOSTされたものは受け付けないとか、
セッションで管理するとか。
■ このスレッドは過去ログ倉庫に格納されています