X



PHP質問・雑談スレ5【初心者お断り(ROM歓迎)】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
垢版 |
2018/10/04(木) 16:43:56.93ID:r0iGnrNs
PHPに関する質問や雑談をするスレです。
初心者お断り(ROM歓迎)と書いてますが、初心者用のスレが用意されているからで、
難しい質問や話題をしなければいけないわけではありません。
PHPマニュアルの読み方を概ね理解していて、関数リファレンスが正しく読める方用のスレです。

PHP未導入の方や、手取り足取りが必要な初心者の方はム板のくだスレへどうぞ。
https://mevius.5ch.net/tech/ (【PHP】で板内を検索)

前スレ
https://medaka.5ch.net/test/read.cgi/php/1498653249/

その他リンク
・PHPマニュアル
 https://secure.php.net/manual/ja/index.php
・コードテスト・貼り付け用
 https://ideone.com/
・プログラミングのお題スレ (求PHPer参戦)
 https://mevius.5ch.net/test/read.cgi/tech/1538096947/

このスレで扱う話題
・PHPのコード,設定や設定値に関する質問
・常識的範囲内でのコードレビュー依頼・改良相談
・PECL,PEARに関する質問
・PHP新機能やPHP関連トレンドの話題
 (FWや非公式ライブラリの話題や特徴比較は良いが使い方から先の話題は専スレへ)
・PHPのバグ発見報告・公式に報告する前の検証依頼

このスレで扱わない話題
・直接関係ない○○特有の質問(専スレへ)
 (HH,エディタ,IDE,サーバ,OS,DB,SQL,FW,テンプレート,非公式ライブラリ・アプリケーション等)
・PHPの改造
0484nobodyさん
垢版 |
2019/01/15(火) 18:05:36.58ID:???
iconv_strlen()ってmb_strlen()と何が違うんや・・・
0485nobodyさん
垢版 |
2019/01/15(火) 18:09:20.42ID:???
array_intersectとか使う方法を思い浮かんだが
コードは短くてもどう考えてもおせえな
0486nobodyさん
垢版 |
2019/01/15(火) 18:15:56.38ID:???
>>483
自分の環境だとpreg_matchより倍ぐらい速かったよ

GoogleCloud GAE PHP5.5の環境で1000回実行したときの時間

preg_match 1.7ミリ秒
strpos 0.8ミリ秒

ちなみに配列ブン回すロジックは1.9ミリ秒だった
0487nobodyさん
垢版 |
2019/01/15(火) 19:04:03.55ID:???
468、476、481 はプログラマの適正なし!
ふつうのコードは470だろ

計算量?速度?そんなの元の質問にねーよw
0488nobodyさん
垢版 |
2019/01/15(火) 19:24:28.18ID:???
>>487
言われなくても考慮するのがプログラマってもんだろ
0489nobodyさん
垢版 |
2019/01/15(火) 19:27:44.79ID:???
ユーザビリティに影響するなら考慮するけど、
>>486にもあるように0.0008秒の差でしょ。それ考慮して何かあるのけ
0490nobodyさん
垢版 |
2019/01/15(火) 19:35:52.02ID:???
正規表現は荒れるからやめろよ
>>468はとても説明的で初心者向けだと思うがな
0491nobodyさん
垢版 |
2019/01/15(火) 19:38:56.04ID:???
>>489
この測定はあくまでも5文字から3文字分の先頭を求めるロジックの測定
質問者が例題でそうしただけでとんでもない容量のデータを対象にした場合は結果も変わってくるでしょう
preg_matchはレングスによっては動作しなくなるみたいだし
0492nobodyさん
垢版 |
2019/01/15(火) 19:42:28.45ID:???
>>487
速度の話になって対比で書いただけだから
ま、実際strpos使って正規表現は使わんけどね
0493nobodyさん
垢版 |
2019/01/15(火) 19:45:58.29ID:???
単純検索や置換で正規表現止めとけは分かるけどこの内容なら普通に正規表現でいいわ
0494nobodyさん
垢版 |
2019/01/15(火) 20:00:22.08ID:???
/[DEF]/
$m[0]
でいいだろ
グルーピングする理由がない
0495nobodyさん
垢版 |
2019/01/15(火) 20:47:02.48ID:???
>>491
>preg_matchはレングスによっては動作しなくなるみたいだし
これマジ? どのくらいから動作しなくなるの?
ちょっとソース教えてクレメンス
0496nobodyさん
垢版 |
2019/01/15(火) 20:48:01.39ID:???
>>491
100回でも0.1秒差だぞ
>>465の処理をそんなにループさせる場面を想定してるの?w
それともこんな変な処理ばっかり押し付けられてるの?
0497nobodyさん
垢版 |
2019/01/15(火) 20:57:48.60ID:???
>>496
一回では測定出来ないから1000回の時間で比較しただけだよ
0498nobodyさん
垢版 |
2019/01/15(火) 21:03:03.45ID:???
>>495
気になったので試してみた

4億8000万文字でも大丈夫だった
$text = str_repeat ( 'D' , 480000000 );
if(preg_match("/([DEF])/",$text,$m)) echo $m[1];

4億8000万文字はphpがエラーになった。
$text = str_repeat ( 'D' , 490000000 );

制限無いと思う

>>491
嘘つきは朝鮮人の始まりだぞ
0499nobodyさん
垢版 |
2019/01/15(火) 21:13:53.13ID:???
>>487
ペチパーってレベル低いな
そのまま解こうとしててバカみたいだわ
>>465の要件がおかしいんだからそれを直せよ
0501nobodyさん
垢版 |
2019/01/15(火) 21:53:16.83ID:???
単純な文字列検索は配列でもstrposのほうが安全
0502nobodyさん
垢版 |
2019/01/15(火) 22:02:33.99ID:???
if (preg_match('/[DEF]/', $text, $matches)) {
// $matches[0] <-
}

って書いといてパフォーマンスが気になるなら計測してから直す
最初からパフォーマンスが―ってのは無能
0503nobodyさん
垢版 |
2019/01/15(火) 22:10:31.76ID:???
>>470はきれいなサンプルコード書いてやれよに呼応して出したんだろ
JavaScriptの小技的なサイトにのってそうな初心者受けしそうなコードじゃないか
質問者も満足して帰ったんだしそれでええだろう
0504nobodyさん
垢版 |
2019/01/15(火) 22:14:02.02ID:???
初心者が満足するのが基準とか頭おかしい
0505nobodyさん
垢版 |
2019/01/15(火) 22:31:44.22ID:???
スレ的にはトリッキーでも面白いコードをみたいところだが
そんなコードが出てきても
速度 読みやすさ コードの長さ どれかに欠点もっててボロクソ叩かれる運命
0507nobodyさん
垢版 |
2019/01/16(水) 08:54:50.45ID:???
>>506
動かなかったのは仕様をちゃんと読まなかった私の責任です
と書いてあるね
0508nobodyさん
垢版 |
2019/01/16(水) 09:10:51.60ID:???
>>507
質問者はpreg_match使うって言ってたからこの辺のリスクも知ってもらわないといけない
0509nobodyさん
垢版 |
2019/01/16(水) 09:18:03.82ID:???
/[DEF]/とかバックトラックも再帰もスタックもO(1)だろ
0510nobodyさん
垢版 |
2019/01/16(水) 09:57:54.92ID:???
>>499の言う通り
どうせ実際の用途は違うんだろ
0511nobodyさん
垢版 |
2019/01/17(木) 04:20:44.82ID:???
正規表現のほうが改修ラクだしいいだろ
文字一文字じゃなく文字列になった場合でもちょっと変えるだけで済むし
0512nobodyさん
垢版 |
2019/01/17(木) 18:21:04.09ID:???
改修が楽なわけないじゃん
strposなら配列に文字列のリスト突っ込むだけに対して
正規表現は何するつもりだ?orでつなぐのか?アホくさw
0513nobodyさん
垢版 |
2019/01/17(木) 18:28:26.13ID:???
正規表現はどうしても荒れるね
>>512みたいな低レベルが自覚せずにしゃしゃりでてくる
0514nobodyさん
垢版 |
2019/01/17(木) 20:18:38.54ID:???
>>513
じゃ答えてみろよ
まさかただの文字列検索にpreg_matchで配列渡すとか愉快なこというんじゃないだろうな?
0515nobodyさん
垢版 |
2019/01/17(木) 20:54:23.21ID:???
>>514
その前に君の意見をどうぞ
随分と高尚なのでそれに見合った意見があるのだろう
別にコードで書かなくてもいいぞ
0516nobodyさん
垢版 |
2019/01/17(木) 21:06:21.16ID:???
正規表現に変数突っ込むのはあかんのか?

<?php
$text = "ADCEB";
$match = "DEF"
if(preg_match("/([".$match.""])/",$text,$m))
echo $m[1];
0517nobodyさん
垢版 |
2019/01/17(木) 21:27:57.19ID:???
>>515
>>512で答えてんだろうが
理解出来ない雑魚は引っ込んでろよ
0519nobodyさん
垢版 |
2019/01/17(木) 21:56:23.98ID:???
3日間も大盛り上がりしてるから仕切り直してみよう

"PHPに関する質問や雑談をするスレです。" *1
この文字列において、
("PHP","質問","雑談") *2
の単語のうち最初に出てくる単語を返しなさい

実際の運用において*1の文字列は大変長いものであり、
*2の単語や数は変わりうるものとし、
実行速度を考慮した上で最適なコードを述べよ

ファイッ
0520nobodyさん
垢版 |
2019/01/17(木) 21:58:31.10ID:???
>>519
大変長いってのはマジでやめてw
保守性だけに笑点しぼってほしい
0521nobodyさん
垢版 |
2019/01/17(木) 21:58:43.42ID:???
ああ、スマン
複数の文字列から検索ってのに脳内変換してた
$match = ["DEF", "CEB"];
foreach ($match as $var)
 if (strpos($text, $var) !== false) //match

アホくさと言ったコード↓
$match = implode("|", $match);
if (preg_match("/(".$match.")/", $text)) //match

>>516見て>>511の言いたいことは理解した
preg_match("/(".$match.")/", $text)って言いたかったのね
ただそれだとpreg_match使う意味が全くないし
strposに比べて改修楽って主張も全く意味わからんけど
0522nobodyさん
垢版 |
2019/01/17(木) 22:02:31.77ID:???
>>512
| を知らんのか?正規表現を知らない初心者かよ
0523512=521
垢版 |
2019/01/17(木) 22:04:12.70ID:???
>>522
こいつ殴っていい?
orと|が別物とか言っちゃうの?
0524nobodyさん
垢版 |
2019/01/17(木) 22:11:04.41ID:???
>>519
$pdo = new PDO("sqlite::memory:");
以下略
0525nobodyさん
垢版 |
2019/01/17(木) 22:59:48.71ID:???
<?php
$text = "PHPに関する質問や雑談をするスレです。" ;
$match = ["質問","雑談"];
$boolean = strpos($text,$match);
if($boolean){
var_dump($boolean );
}


これあかんのか
0526nobodyさん
垢版 |
2019/01/17(木) 23:24:57.11ID:???
strposにとって0はtrueだから
0527nobodyさん
垢版 |
2019/01/17(木) 23:29:45.83ID:???
strposに配列渡せるのは知らんかったわ
うえのほうでforeachで回してるもんだからてっきりそういうもんかと
オーバーロードはマニュアル分けてほしいわややこしい
0528nobodyさん
垢版 |
2019/01/17(木) 23:44:33.27ID:???
上のは要件が違うからね
0529nobodyさん
垢版 |
2019/01/17(木) 23:52:22.21ID:???
クライアントが使っているレンタルサーバーが全部5系で絶望中
7系に対応してないサーバーや、7.0系にしか対応してないサーバーが多い

5系でも5.6系じゃなくて5.1系とか5.3系とかとっくに死んでるのも多い
5.1系でWP4系を動かしてる無茶なサイトもあるし

そもそも互換性がないから安易に7系に移行できない
セキュリティーサポート終了は知らなかったことにしたい
あるいはガッツリ金と時間を取って対応したい
0530nobodyさん
垢版 |
2019/01/18(金) 00:29:58.57ID:???
クライアントからクレーム来た
アルファメールのphpバージョンが5.4→7.0
どっちにしてもセキュリティ的に問題があるだろってさ
知らんがな、それ選んだのは君だろう
0531nobodyさん
垢版 |
2019/01/18(金) 00:32:17.89ID:???
>>529
うおっとすごい奇遇だね
なんか流行りでもあるのかね。スパムメールで営業でもしているのだろうか
とりあえず金とって対応スべきだとは思う
これはハイハイといっていい案件ではないわ
0532nobodyさん
垢版 |
2019/01/18(金) 00:45:00.02ID:???
array()とかcreate_functionとか書かなきゃいけないサーバは勘弁してほしいわ
0533nobodyさん
垢版 |
2019/01/18(金) 07:37:29.32ID:???
>>531
金と時間の話も絶望的だが仮に金と時間が取れたとしても
全てのクライアントのサーバー引っ越し作業が必要になる絶望感
0534nobodyさん
垢版 |
2019/01/18(金) 08:55:47.80ID:???
>>529
うるせーぞ
保守案件とはいえ いまだに4.4使ってんだこっちは
0535nobodyさん
垢版 |
2019/01/18(金) 09:28:43.13ID:???
4.4とかセキュリティ的に怖いすぎる
調べるのも面倒なレベルだ
0536nobodyさん
垢版 |
2019/01/18(金) 12:09:56.90ID:???
保守案件だからこそバージョンが問題になるんじゃないのか・・・
ネットに繋がってないシステムなら話は別だけど

結局、まだどこも5系使っているし、
赤信号皆で渡れば怖くない的な状態?
いやこの場合、皆だと更に怖いんだけど
0537nobodyさん
垢版 |
2019/01/18(金) 13:08:17.55ID:???
零細相手だと金がないからその場しのぎでアップデート渋ってるんだろ
結局そっちのほうがコストかさむのにな
0538nobodyさん
垢版 |
2019/01/18(金) 14:20:28.35ID:???
5系以下は対応できませんの一点張りでいいだろ
0539nobodyさん
垢版 |
2019/01/18(金) 15:27:55.50ID:???
お問い合わせフォームで入力してもらう件名や本文の文字数の上限って皆さんどんな感じで決めてるんですか?
0540nobodyさん
垢版 |
2019/01/18(金) 17:10:00.60ID:???
>>538
それができるなんてうらやましい
妄想じゃないよな?
0541nobodyさん
垢版 |
2019/01/18(金) 17:17:35.28ID:???
対応出来るかどうかは別にしてもセキュリティについて責任持てませんは言わなきゃダメよ実際責任持てんし
0542nobodyさん
垢版 |
2019/01/18(金) 17:35:34.87ID:???
まぁこれはweb業者側から言って置かないとダメだな
書面にして残しておくぐらいでも良い
ってか、アップデートぐらいしようよ、普通に
0543nobodyさん
垢版 |
2019/01/18(金) 17:51:00.00ID:???
だってレンタルしているサーバーが対応してないんだもん
同じ会社の新しいサーバーは対応しているけど、
クライアントはいっぱいいて1つ1つ移行を代行するのも大変なんだもん
わからない?

わかったらどーしたらええか教えてくれや
0544nobodyさん
垢版 |
2019/01/18(金) 17:55:00.88ID:???
書き込んでる暇があるなら移行すればいい
0545nobodyさん
垢版 |
2019/01/18(金) 18:31:14.05ID:???
暇があれば移行できるとはなんとも小規模事業者のような考え方
あるいはその逆で大規模技術者集団か

うちみたいに人員と技術力に見合わない規模の事業やっている、
中途半端なところが大変なんです
0546nobodyさん
垢版 |
2019/01/18(金) 19:08:25.26ID:???
>>538
じゃあ 6 でお願いしますね(ニッコリ
0547nobodyさん
垢版 |
2019/01/18(金) 19:30:23.16ID:???
存在しないものはNG
0548nobodyさん
垢版 |
2019/01/18(金) 19:39:51.26ID:???
みんなの心の中に、PHP6は存在するのです・・・
0549nobodyさん
垢版 |
2019/01/18(金) 20:17:19.30ID:???
開発が頓挫してリリースされなかっただけで存在しないわけではないのでは?
0550nobodyさん
垢版 |
2019/01/18(金) 20:23:03.13ID:???
>>543
金を請求して、サーバー移行作業を行うのが正しい姿
最低限蔵には現状ヤバイ状態と言うだけ言っておかないと、
今後何か合った時に大惨事になるよ
0551nobodyさん
垢版 |
2019/01/18(金) 20:23:49.06ID:???
存在するけど手に入らないってロマンチックだね
0555nobodyさん
垢版 |
2019/01/18(金) 21:34:07.95ID:???
>>550
そりゃそうなんだけど、
クライアントに説明して金を貰うところまでは
(一社一社やっていくわけだから面倒だけど)とりあえずはいいとして、
その後の実際の仕事の量に絶望するよね
うちサーバー移行のノウハウないし
0556nobodyさん
垢版 |
2019/01/18(金) 21:34:57.60ID:???
馴れ合いは初心者スレでやって
0557nobodyさん
垢版 |
2019/01/18(金) 21:36:49.26ID:???
プロならPHP7を使ってるのが当たり前
0558nobodyさん
垢版 |
2019/01/18(金) 22:41:08.32ID:???
世の中素人なのが当たり前
だからこれだけPHP5が使われている
0559nobodyさん
垢版 |
2019/01/18(金) 22:45:02.95ID:???
素人なのは恥ずべきことであって
決して開きなおるようなことではない
0560nobodyさん
垢版 |
2019/01/18(金) 23:13:45.30ID:???
一部の7使いが高みの見物をする中、
多くの5使いがいつか大殺戮に遭うんだろうな
素人なのは嘆かわしいことでもある
0561nobodyさん
垢版 |
2019/01/18(金) 23:21:19.98ID:???
個人情報取り扱ってなかったらHPがエロサイトになるぐらいで済む
平気平気
0562nobodyさん
垢版 |
2019/01/19(土) 08:49:46.42ID:???
今までextだったのがバンドルされてたり廃止されたりして設定がなくなってたりするけど
そのへんdllや設定読み込み無視したりでPHP5の設定をPHP7でそのまま使える?
まあめんどくさいしソースからビルドはしないで
パッケージから入れて使うext有効にするだけなんだけど…
最近じゃ専用PHPが必要なlsws使ってるからリリースすぐに最新のPHPアプデ出来るしな
0563nobodyさん
垢版 |
2019/01/19(土) 12:23:52.39ID:???
lswsってどう?Apacheと同じ感覚でつかえる?
0564nobodyさん
垢版 |
2019/01/19(土) 13:33:28.05ID:???
LSWSはPHPerなら非WPユーザーにもおすすめ
Apacheのルールが使えるからリライト設定も楽だし
PHP製の設定ツールが標準でついてて
設定ファイル編集からサーバ再起動までWebで出来るのも良い
http2も証明書設定すませるだけで使えるようになってたしとにかく楽
肥大化しすぎたApacheをシンプルにまとめたような代物
信頼性堅牢さの評価はわからんが特に問題にもなってないし大丈夫だと思う
0566nobodyさん
垢版 |
2019/01/21(月) 12:47:36.29ID:???
>>540
え、むしろ君のところでは出来ないの?
保守案件なんかは仕方ないかもしれんけど、新規は5系切り捨ててるよ。

だって実際5系切り捨ててるフレームワークやライブラリ増えてきてるし。
Laravelなんかはバージョン5.5から5系のphp切り捨ててるよ。
0567nobodyさん
垢版 |
2019/01/21(月) 13:00:04.43ID:???
phpバージョンってずーっとほっといたら強制的にバージョン上がったりする?
0568nobodyさん
垢版 |
2019/01/21(月) 13:46:56.07ID:???
>>567
俺たちじゃ分からないからサーバー管理者に聞こう
0569nobodyさん
垢版 |
2019/01/21(月) 15:27:31.76ID:???
今からFWやCMSみたいな第三者に使ってもらう前提のものを作るとして
5系は全く配慮しなくてもいいだろう(少なくとも国内は)
数百円でも有料サーバなら今どき7も使えるように配慮してるわ
たとえ4時代から使ってるような古いサーバであっても
15年ぐらい前に使い始めて未だアカウント有効なxreaがまさにそう(放置して無料プランだけど)
昔はサーバごとに入ってるPHPのバージョンはバラバラで
なかなか上がらないバージョンに不満があってだいぶ昔に見限ったけど
いつのタイミングかどのサーバでもPHPのバージョン選択出来るよう仕様変更したらしい
0570nobodyさん
垢版 |
2019/01/21(月) 15:33:45.12ID:???
今はサーバー会社がphp複数入れておいて、ユーザーが選択って方式ばっかりだね
全く利用者がいなくなってから古いバージョン削除とかそんな感じだと思う
0571nobodyさん
垢版 |
2019/01/21(月) 17:13:58.26ID:???
うーん。うちの場合は保守運用している案件で、
サーバー引っ越さないと駄目なところが多いんだよなあ。

レンタル会社の選択ミスったか。
いや、選んだの俺じゃないけど、
クライアントに提案したのうちの奴だしな。
0572nobodyさん
垢版 |
2019/01/21(月) 17:20:06.73ID:???
>>571
ちなみに失敗したサーバーってどこ?

俺はアルファメール
未だにphp7.0が最新、サポートきれとる
0573nobodyさん
垢版 |
2019/01/21(月) 17:42:47.95ID:???
>>572
ちょっとコンプライアンス的に厳しいかな。ごめん。
0574nobodyさん
垢版 |
2019/01/21(月) 18:05:24.48ID:???
>>573
気にするな

全く別の質問スレで、
「xxのサーバーのセキュリティ的にどう?」と、あくまで感想を聞くのは問題ないと思うぞ
0575nobodyさん
垢版 |
2019/01/22(火) 12:48:04.79ID:1IqQBOsn
選択できるバージョンのphpってcgiモードでしょ?
7.2提供開始ってことで選択して使ってみたけど、cgiエラーで時々500 Internal Server Error出すからモジュール版の5.6に戻した
cgi版は不安定という印象で、安定求めるなら使えなくない?
0576nobodyさん
垢版 |
2019/01/22(火) 18:22:11.69ID:???
そもそもPHPで○○求めてるのが間違いと開き直って
適当に富豪的プログラムやってる結果だろう
0577576
垢版 |
2019/01/22(火) 18:22:38.89ID:???
サーバリソースないくせに ね
あるならいいんだよ好き勝手やって
0578nobodyさん
垢版 |
2019/01/22(火) 19:14:11.63ID:???
>>575
普通に使えるし500エラーは見当たらない
コードがどこか変なんじゃないか
0579nobodyさん
垢版 |
2019/01/22(火) 19:59:02.37ID:???
コマンドラインからの対話型アプリケーションを作ろうと思ってるんですが
操作途中でctrl+cみたいな強制終了された場合destructorは呼ばれますか?
OSやシェルによっては呼ばれなかったりしますか?

あと
class C {
function __destruct() {
echo "DESTRUCT";
}
function _echo($str) {
echo $str;
}
}
$t = new C;
$t->_echo("test");
$t->__destruct();
$t->_echo("test2");
このコードはちゃんと動くんですが
このようにdestructorは任意のタイミングで呼んでもいいのでしょうか?
終了メソッドが減らせるのでおかしくなかったらこれにしようかと思います
0580nobodyさん
垢版 |
2019/01/22(火) 21:41:49.73ID:???
$t->__destruct();

動くか否か以前に、こんなの書いたら末代まで笑いものにされるぞ。
0581579
垢版 |
2019/01/22(火) 22:33:16.68ID:???
上の例ではテストでechoしてますが
明示的に呼びたかっただけでdestruct呼び出したあとは
オブジェクトには用事はないので単にnullを入れることにしました
それでも呼べるようなので
0582nobodyさん
垢版 |
2019/01/26(土) 16:47:05.12ID:BHGZ+Tjq
制御文字が含まれているかを調べるためにpreg_match関数を使っているのですが、他に代替できる関数はありますか?(´・ω・`)
0583nobodyさん
垢版 |
2019/01/26(土) 17:07:19.65ID:???
>>582
あるけどpreg_matchがだんぜん速い

スクリプトでループを書くより、ライブラリ内でループさせた方が良い
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況