[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 09/17 04:56 / Filesize : 316 KB / Number-of Response : 1028
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【PHP】下らねぇ質問はここに書き込みやがれ 11



1 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 14:25:26.87 ID:RQhNy1WS0.net]
PHPに関する質問スレです

前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 10
mevius.5ch.net/test/read.cgi/tech/1543392526/

次スレは>>980以降
本文の1行目に以下を追加すること
!extend:on:vvvvv:1000:512
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured

321 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 18:38:45.68 ID:BXZAjCBt0.net]
strpos($hoge,"g")が何を返しているかを調べる
そして、その理由を考える
あとは、わかるな

322 名前:デフォルトの名無しさん [2020/08/10(月) 20:15:14.58 ID:bVpI+4NnM.net]
PHP7を学習中の者です
8.0で仕様、書き方がガラッと変わったと聞いたのですが本当ですか?

323 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 10:36:06.23 ID:7m/ufExf0.net]
>>315
そりゃ0を返しているからそうなるだけ
FALSEとイコールで見付からなかったと判定するのが正解

324 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 10:57:15.24 ID:7m/ufExf0.net]
>>318の質問でちょっと調べてみたら
>>315のような文字列が存在しているか調べる関数がPHP8で導入されるようで
PHP8ではstr_contains()で書けるようになるらしい
まぁ、確かにこの方が存在しているだけを調べるならスマートではあるね
PHP8になってもプログラマの方はそんなに気にする必要は無いみたいな感じ

325 名前:デフォルトの名無しさん (ワッチョイ 1bc7-qEq0) [2020/08/11(火) 11:20:57 ID:x3iAuc4F0.net]
なぜphpは.ではなく、アロー演算子なんでしょうか?

326 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 11:27:26.60 ID:1kHdySm/M.net]
>>321
.ピリオドは文字連結にも使われるので可読性が落ちるから

327 名前:デフォルトの名無しさん [2020/08/11(火) 12:16:30.51 ID:x3iAuc4F0.net]
なるほど
なかなか慣れなくて、、、(´・ω・`)

328 名前:デフォルトの名無しさん (ワッチョイ 1bc7-qEq0) [2020/08/11(火) 19:10:21 ID:x3iAuc4F0.net]
strposに関してですが、検索文字列にはてなが指定されていることがあります。
これは一体何をしているのでしょうか。


329 名前:号なので検索しづらく、情報が見つかりませんでした。

strpos($target,'?')
こんな感じです
[]
[ここ壊れてます]



330 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 19:20:21.18 ID:gJF+/AhQ0.net]
>>324
指定されていることがありますってなら
実際に使っているソースを見せてくれないか?

一休さんと同じで、出してくれればたちどころに捕まえて見せます、だろう

331 名前:デフォルトの名無しさん [2020/08/11(火) 19:51:57.81 ID:x3iAuc4F0.net]
https://ideone.com/gdHAao
https://techacademy.jp/magazine/7525
すみません
このソースの4行目です
ワードプレス関連で、ページ送りに使われています

332 名前:デフォルトの名無しさん (ワッチョイ 1b46-FoHg) mailto:sage [2020/08/11(火) 19:57:48 ID:m6hVVdmE0.net]
あんま見ないけど
対象文字列が何であっても全てワイルドカードに変換してるってことかな

333 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 20:22:21.18 ID:RdKhLiIu0.net]
ページのリンク形式がqueryかPATH_INFOか判定してるだけでしょ
strposの'?'に特別な機能があるわけじゃない

334 名前:デフォルトの名無しさん [2020/08/11(火) 20:34:17.94 ID:x3iAuc4F0.net]
はてなの含まれないurlを判定してるということですね
ありがとうございました

335 名前:デフォルトの名無しさん [2020/08/13(木) 17:41:21.72 ID:MXf8lpiCp.net]
新しいpcでxamppいれてphp.ini書き換えてもphpinfoに反映されない。旧pcでもダメだった、アパッチ再起動、Loaded file一致も確認してるけどダメ。ネットで調べてもこれ以外で出てこないし、何か分かる方いますか?win10です
php.iniはインストールしてそのままc:¥xampp¥php¥php.iniにあります

336 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 19:24:44.14 ID:4EoQL8yn0.net]
phpinfo()で表示されているphp.iniのフルパスを確認した方がいいかも?

337 名前:デフォルトの名無しさん (ワッチョイ 4d61-QlkZ) [2020/08/13(木) 20:07:42 ID:Cfghw1580.net]
まずコマンドライン(php -iや-mなど)で確認できているか?
コマンドラインで確認出来ていて、サービス化すると確認できなくなる場合は、
一度システム再起動の必要になる(Windowsのsvchost?のめんどくさい仕様)。

338 名前:デフォルトの名無しさん (ササクッテロレ Spf1-pkts) [2020/08/13(木) 21:01:19 ID:MXf8lpiCp.net]
>>331
すみません、phpInfo()のフルパスとは何かがわかりませんが、Configuration File(php.ini)PathはC:¥windows、Loaded Configuration FileはC:¥xampp¥php¥php.iniとなっています。前者は初心者ゆえ何のことだかわかりませんが、少なくとも後者のファイルは自分で編集したファイルと一致しているはずなのですが...

>>332
シェルにてphp -i、php -m それぞれ実行しました。が、前者で表示された記載と私が編集したphp.iniの記載が一致していませんでした。

なんにしろxamppも入れたてで入門書やネット情報通りに操作してもうまくいかないので、もっと根本的な部分で誤りがあるのかもしれません。もう少し調べてみます。

339 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 22:49:03.97 ID:4EoQL8yn0.net]
>>333
今新規にxampp入れてみて、XAMPP Control PanelのApacheのConfigからphp.iniを選択して
memory_limitを512Mから1024Mに変えて再起動して
localhost/dashboard/phpinfo.php
で確認したらちゃんと変更が更新されていたので、それで設定が変えられないなら
個別にphpを入れたものとかあったりしてそれがpathの関係で邪魔しているとかもあるので
一旦全部消してxamppを入れなおせば変な事にはならないと思うが



340 名前:デフォルトの名無しさん (ワッチョイ e52c-178q) mailto:sage [2020/08/14(金) 00:07:59 ID:SCMnTycc0.net]
例えば、メモ帳のパスなら、コマンドプロンプトで確認できる。
上に表示される方が、優先される

where notepad
C:\Windows\System32\notepad.exe
C:\Windows\notepad.exe

同様に、where php とやってみれば?

環境変数パスを知らないような人は、システム環境構築運用なんて、とてもできない

341 名前:デフォルトの名無しさん [2020/08/14(金) 16:23:54.63 ID:gdj6lSjH0.net]
wordpressでfunction phpに以下を記述しました
function hogehoge(){
$hoge = "ほげ";
}

header phpでこれを呼び出しました
?php echo hogehoge().hoge;?
きちんと表示されます

?php echo hogehoge()->hoge;?
しかしこれは表示されませんが、何故でしょうか?
phpはアロー演算子をピリオドの代わりに使うそうですが、、

342 名前:デフォルトの名無しさん [2020/08/14(金) 17:30:27.59 ID:XEPDP23xa.net]
>>336
https://techacademy.jp/magazine/19296
-> アロー演算子はその左辺にはクラスのインスタンスを取り、
右辺には左辺のクラスが持つプロパティやメソッドを指定し
プロパティへのアクセス・メソッドの呼び出しを実行します。

343 名前:デフォルトの名無しさん [2020/08/14(金) 18:17:39.77 ID:gdj6lSjH0.net]
クラスのプロパティへのアクセス方法と、関数のプロパティへのアクセス方法gあ違うのですか?
他の言語だと同じだと思うんですが、アロー演算子の場合、インスタンス化と取り出しを一気に行うということでしょうか?

344 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 19:58:37.47 ID:Knkd60VG0.net]
>>336
何がしたいのか良く分からないが
function hogehoge(){
$hoge = "ほげ";
return $hoge;
}

と表示したいものをreturnしてから
echo hogehoge();
とすれば良いだけでは?

345 名前:デフォルトの名無しさん (ワッチョイ 46c7-zLXa) [2020/08/15(土) 06:35:37 ID:OMYcSWb50.net]
クラスや関数の変数にアクセスしたいのです
アロー演算子はインスタンス化も行うのでしょうか

346 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 09:10:22.35 ID:fdFbalj40.net]
取り合えず簡単なコード書いてみたけど
https://paiza.io/projects/e/sIu4YD7XajYVl7bDeo-EYg

クラスにする必要があるのならクラスのコードを書いてnewでインスタンスを作成して
メソッド(関数)を呼び出せばいいだけ
staticにすればインスタンスを作る必要はないのでクラス名::メソッド名で呼べる

347 名前:デフォルトの名無しさん (ワッチョイ 46c7-zLXa) [2020/08/15(土) 09:21:26 ID:OMYcSWb50.net]
アロー演算子とピリオドの機能的な違いを知りたいのですが、なんでしょうか?
クラスのメソッドを呼び出す場合はアローで、メソッドからプロパティなどを呼び出す場合はピリオドですかね。

348 名前:デフォルトの名無しさん (ワッチョイ 027c-p5K4) mailto:sage [2020/08/15(土) 11:11:58 ID:fdFbalj40.net]
PHPのピリオドは文字列を連結する演算子で、メソッドやプロパティもstaticでなければインスタンスから
アロー演算子でしかアクセス出来ません(勿論publicでないと呼べません)

メソッドからプロパティを呼ぶという言葉が意味不明過ぎて
勘違い?としてなら良くあるシングルトンの実装で

TestClass::getInstance()->hige();
みたいな事は可能ですがgetInstance()は自身のインスタンスを返すように作って無ければなりません

349 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 12:02:32.14 ID:6WbTgz8j0.net]
リクエストで外部キーを引っ張ってくるときに
ddで確認すると数字は取れてるんですが→nullになっていて関数上で使えません。
助けてください。



350 名前:デフォルトの名無しさん (ワッチョイ 06de-/T98) mailto:sage [2020/08/15(土) 12:35:24 ID:6WbTgz8j0.net]
補足です。
ブレードからコントローラーに値を送る際です。
ショウメソッド的な感じで、新たに自分で作ったメソッドで
インデックスブレードからコントローラーにあるIDを送りたいんですが
ddで見ると一応数字は取れてるのに、=>nullとなっていて
そっから展開が進みません。
助けてください。

351 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 13:04:40.20 ID:6WbTgz8j0.net]
自決したっぽいです。

352 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 13:14:03.77 ID:0tc6f7mC0.net]
自決は、ちょっと待て
これを見てからにしろ

twitpic.com/6ro6ks

353 名前:デフォルトの名無しさん [2020/08/15(土) 16:54:55.83 ID:OMYcSWb50.net]
>>343
よくわからないですが、一旦飲み込みますです

354 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 17:45:17.35 ID:z+dvr5Wj0.net]
id year
1 2003
2 2004
3 2005
4 2006
5 2007
6 2008
7 2009


みたいなテーブルがあるんですが
find($id)でidで探すことは可能なんですが
find($year)で例えば2007で検索しようとするとnullになってしまいます。
yearカラムのデータはstringだったのでintegerに変えたりしましたが解決しません。
どうすればよろしいでしょうか。。

355 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 18:39:34.17 ID:fdFbalj40.net]
>>349
Laravelのeloquentでの話とします
find()はidを検索するものなので
yearを検索するなら
where('year', $year)->first()
と書きましょう

356 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 18:47:04.37 ID:z+dvr5Wj0.net]
>>350
早速ありがとうございます!!
ご指摘の通りやらせていただいたところ解決致しました(TT)
whereも気になってググってみてはいたんですが使い方がイマイチわからず、、
本当に助かりました。

357 名前:デフォルトの名無しさん [2020/08/17(月) 04:54:24.89 ID:nU1LGxzf0.net]
https://ideone.com/4IX092
htmlタグはすべてphp内に書くべきなんでしょうか?
どちらの書き方がいいですか?

358 名前:デフォルトの名無しさん (ワッチョイ 46c7-zLXa) [2020/08/17(月) 05:11:52 ID:nU1LGxzf0.net]
?php
$tag = "<p>"{0}"</p>";

echo $tag.format("hoge");


formatなのですが、これで波括弧がunexpectedになるのは何故でしょうか?

359 名前:デフォルトの名無しさん (ワッチョイ 46c7-zLXa) [2020/08/17(月) 05:12:19 ID:nU1LGxzf0.net]
失礼 これでした
$tag = "<p>".{0}."</p>";



360 名前:デフォルトの名無しさん (ワッチョイ e52c-178q) mailto:sage [2020/08/17(月) 07:39:28 ID:9mJqNW620.net]
>>352
Ruby では、ERB という埋め込みテンプレートエンジンがあって、
HTML ファイル内に、Ruby のコードを埋め込める

<% 式 %> では、表示せず、単に式を実行するだけ。
<%= 式 %> では、式を実行して、その結果を表示する

<ul>
<% [ 1, 2, 3 ].each do |num| %>
<li><b><%= num %></b></li>
<% end %>
</ul>


361 名前:
結果
<ul>
<li><b>1</b></li>
<li><b>2</b></li>
<li><b>3</b></li>
</ul>
[]
[ここ壊れてます]

362 名前:デフォルトの名無しさん (ワッチョイ 46c7-zLXa) [2020/08/17(月) 08:44:55 ID:nU1LGxzf0.net]
いえ、phpです

363 名前:355 mailto:sage [2020/08/17(月) 10:02:01.39 ID:9mJqNW620.net]
できる限り、Ruby に似せて書けばよい

その方が、可読性が高い

364 名前:デフォルトの名無しさん mailto:sage [2020/08/17(月) 10:16:02.28 ID:R6L6Ndbb0.net]
>>353
どこの言語からやってきたのか分かりませんが・・・
PHPではsprintf()か変数展開で可能
$hoge = 'hoge';
echo sprintf('<p>%s</p>', $hoge);
または
$hoge = 'hoge';
echo "<p>$hoge</p>";

365 名前:デフォルトの名無しさん [2020/08/17(月) 10:31:15.34 ID:nU1LGxzf0.net]
pythonと勘違いしてました、、

366 名前:デフォルトの名無しさん [2020/08/17(月) 10:46:06.64 ID:nU1LGxzf0.net]
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/WP_Query
wp queryというのは関数ではなく、クラスでしょうか?
関数リファレンスとなっていますが、、、

367 名前:デフォルトの名無しさん mailto:sage [2020/08/17(月) 11:36:05.01 ID:p+skW/fDM.net]
>>352
どちらも用途によって使い分ける
テンプレートに宛字する時は埋め込みを使うし
データベースから引っ張ってきたらテーブルタグはジェネレートで生成するから

368 名前:デフォルトの名無しさん [2020/08/17(月) 16:27:11.96 ID:nU1LGxzf0.net]
>>361
では、基本的には埋め込みはあまり使わない感じですよね

369 名前:デフォルトの名無しさん [2020/08/17(月) 23:13:09.81 ID:VzEaSA8o0.net]
いやいや、PHPはHTMLのテンプレートから発展した言語だから。



370 名前:355 (ワッチョイ e52c-178q) mailto:sage [2020/08/17(月) 23:39:47 ID:9mJqNW620.net]
最初、Ruby では、
Rubyで、文字列のHTML 片を作っていた

これがあまりにも面倒なので、考えを逆転させて、
HTML内で、Rubyのコード片を実行するようになった

それが、この2つの表記
<% 式 %>, <%= 式 %>

これが、ERB という、Rubyの埋め込みテンプレートエンジン。
ちなみに、あらゆる種類のファイルに、Rubyのコード片を埋め込める

a.html.erb, b.js.erb など

371 名前:デフォルトの名無しさん mailto:sage [2020/08/18(火) 00:28:03.33 ID:3tEZ7IxF0.net]
埋め込みは当たり前のように遣ってたな

372 名前:デフォルトの名無しさん mailto:sage [2020/08/18(火) 01:44:22.07 ID:IZwRntbAM.net]
phpのスレでRubyの勧誘するのってなんなの?

373 名前:デフォルトの名無しさん mailto:sage [2020/08/18(火) 07:02:13.19 ID:Fdm1HnVu0.net]
>>366
この板に住み着いた壊れたボットだよ
言葉は通じないからスルーするしかない

374 名前:デフォルトの名無しさん mailto:sage [2020/08/18(火) 17:31:30.36 ID:IdLI5hpvr.net]
>>364
Rubyすげぇ、、、phpじゃできないもんな

375 名前:デフォルトの名無しさん [2020/08/19(水) 03:15:55.98 ID:lmPqEok8M.net]
設定やDBへのログインパスなどを記したインクルードファイルの拡張子は何がオススメですか?慣例とかありますか?

376 名前:デフォルトの名無しさん mailto:sage [2020/08/19(水) 04:01:54.62 ID:832DQeBHa.net]
拡張子は変えないでいいんじゃね

377 名前:デフォルトの名無しさん mailto:sage [2020/08/19(水) 07:40:21.79 ID:Mw6y6ZKQ0.net]
>>366
Rubyが過疎で話し相手がいないんだろう

378 名前:デフォルトの名無しさん mailto:sage [2020/08/19(水) 10:39:56.60 ID:Jv991dcL0.net]
拡張子を.inc とかにするとソースコードが丸見えになることがあるとかないとか

379 名前:デフォルトの名無しさん mailto:sage [2020/08/19(水) 12:14:24.52 ID:hsLGYVPM0.net]
OS上の安全な所に保存して、中身はparse_ini_file使って取得してる



380 名前:デフォルトの名無しさん mailto:sage [2020/08/19(水) 21:48:15.08 ID:EjRsdu110.net]
簡単なものでもLaravelなどのフレームワークを用いた方が何かと便利だとは思う
フレームワークなら設定用のファイルなども用意されていて、Laravelの場合は
プロジェクトのルートに.envファイルがありそこにDBの接続情報など書いたりする

381 名前:デフォルトの名無しさん mailto:sage [2020/08/22(土) 05:03:03.61 ID:iyOM14R/0.net]
function isIe()
{
$userAgent = $_SERVER['HTTP_USER_AGENT'];
if (strstr($userAgent, 'Trident') || strstr($userAgent, 'MSIE')) {
return true;
}
return false;
}

IEかどうかチェックする関数があるのですが、
特有の文字列があれば真を返すのはわかるのですが、その後に偽を返してしまいそうなのですが、
phpはreturnがあれば強制的にそこで関数が終わると考えて良いのでしょうか?

382 名前:デフォルトの名無しさん mailto:sage [2020/08/22(土) 06:45:18.27 ID:6Z2EqbSN0.net]
>>375
リファレンスを読まない理由を教えてください

383 名前:デフォルトの名無しさん mailto:sage [2020/08/22(土) 07:43:46.74 ID:iyOM14R/0.net]
>>376
https://www.php.net/manual/ja/language.references.return.php
ここを読んで見ましたが、リファレンスを返すというのがわからない状態です

384 名前:デフォルトの名無しさん (ワッチョイ 1f0b-pb87) mailto:sage [2020/08/22(土) 10:29:48 ID:tZBSf8Cz0.net]
>>375
その通り。
phpはreturnがあれば強制的にそこで関数が終わると考えて良い。

>>377 のリファレンスは、「参照」という機能であり、
>>376 のリファレンスは、「言語の説明書(マニュアル)」という意味でたぶん使われている。
意味が違う別のものだから勘違いしない方がいい。

385 名前:デフォルトの名無しさん mailto:sage [2020/08/22(土) 17:02:25.49 ID:iyOM14R/0.net]
>>378
ありがとうございます。
そこで終わるのですね、やっと真偽がわかるようになってきたので、
リファレンスという言葉が出てきて混乱しました。

386 名前:デフォルトの名無しさん mailto:sage [2020/08/24(月) 06:48:39.71 ID:C1uB6ZQy0.net]
ググれば分かることを人に聞くのは
本人のためにならないんだよな
そこ、プログラマの基本的な資質だから
安易に答えるのもどうかと思うし

387 名前:デフォルトの名無しさん [2020/08/25(火) 20:26:57.46 ID:khngmmlE0.net]
https://on-ze.com/archives/1615
rssの取得にライブラリは必要なんですか?
rss-phpを使用している場合が多いですが、上では必要ないですね

388 名前:デフォルトの名無しさん mailto:sage [2020/08/26(水) 02:37:14.50 ID:BpaQECb00.net]
Ruby では、RSS ライブラリを使う

RSS Parserは、RSS 0.9x/1.0/2.0, Atom 1.0 をサポートしていますが,RSS 0.90 はサポートしていない

独自では、バージョン判定・XML 整形式の判定など、作れない

389 名前:デフォルトの名無しさん [2020/08/26(水) 05:57:56.26 ID:rxHVxy4B0.net]
rubyではなくです



390 名前:デフォルトの名無しさん [2020/08/26(水) 10:56:12.28 ID:rxHVxy4B0.net]
curlとsimple xmlの違いはなんでしょうか?
rss取得が目的です。

391 名前:デフォルトの名無しさん [2020/08/26(水) 11:28:22.15 ID:rxHVxy4B0.net]
ちがった
file get contentsとcurlの違いす

392 名前:デフォルトの名無しさん (ワッチョイ 9d08-JMbW) mailto:sage [2020/08/26(水) 11:32:21 ID:V3GgHeuL0.net]
まず、処理の切り分けをするべき

1. rssを取得する
2. 取得したrssを解析してオブジェクトなり配列なりを返す

1だけなら、file_get_contents()なりcURLなり使えばいい

simplexml_load_fileは、1と2を同時にやってくれる
そんだけ

>>381
外部のライブラリは必須ではない
ライブラリを使った方がより直感的に書けたり標準関数にはない機能があったりする事もあるってだけ
プログラムの書き方は1つじゃない

393 名前:デフォルトの名無しさん [2020/08/26(水) 12:10:42.02 ID:rxHVxy4B0.net]
simplexml_load_fileは1と2を同時にやるということですが、file_get_contentsとセットで使われていますので、1はfile_get_contents、2はsimplexml_load_fileということではないのですか?

394 名前:382 mailto:sage [2020/08/26(水) 12:35:09.11 ID:BpaQECb00.net]
>>384-385
普通、Ruby でスクレイピングするなら、

require 'open-uri'
require 'nokogiri'

url = 'www.example.com/' # @
doc = Nokogiri::HTML( open( url ) ) # @

elements = doc.css( "h1" )
puts elements.first.content #=> Example Domain

上の@ の2行を、下のように、
curl という、OS の外部コマンドを呼んでも、HTML を取得できるというだけ

html = `curl www.example.com/`
doc = Nokogiri::HTML( html )

395 名前:デフォルトの名無しさん mailto:sage [2020/08/26(水) 13:20:32.20 ID:V3GgHeuL0.net]
>>387
せめてPHPマニュアルぐらいは読もう
https://www.php.net/manual/ja/function.simplexml-load-file.php

simplexml_load_file()はURLとファイルパスの両方を受け付ける(PHPにはこういう関数が多い)
つまり、

A
1. file_get_contents()で指定URLの内容を取得
2. 1をファイルに保存
3. 2をsimplexml_load_file()でパース

としなくても

B
1. simplexml_load_file()でURLを直接パース

ってできる。


じゃぁなぜわざわざAみたいな書き方もするかっていうと、
例えば取得したrssをローカルに保存してそれをキャッシュとして利用すれば
URLを何度も取得する負荷を減らせるから

この「なぜ」そういう書き方をするか?って事が理解できてないのは、プログラマとしては失格だなぁ

396 名前:デフォルトの名無しさん [2020/08/26(水) 13:42:33.83 ID:rxHVxy4B0.net]
変数にするってことですよね
それはもちろん理解できます

マニュアルはむずくてなかなか、、、

397 名前:デフォルトの名無しさん mailto:sage [2020/08/26(水) 14:05:12.50 ID:V3GgHeuL0.net]
>>390
> 変数にするってことですよね

違うw
よく読もうw

398 名前:デフォルトの名無しさん [2020/08/26(水) 14:30:59.58 ID:rxHVxy4B0.net]
サーバのキャッシュする場所に置いておくってことですかね

399 名前:デフォルトの名無しさん (ワッチョイ 9d08-JMbW) mailto:sage [2020/08/26(水) 14:48:59 ID:V3GgHeuL0.net]
そんな感じ
PHPなんかスクリプト言語ですぐに書いて実行できるんだからさ、
四の五の悩んでる暇あったら実際にコードを書けばいいんだよ

$url = 'https://news.yahoo.co.jp/rss/topics/it.xml';

// file_get_contents()で取得しファイルに保存してからパースする場合
$data = file_get_contents($url);
file_put_contents('test.xml', $data);
$xml = simplexml_load_file('test.xml');
print_r($xml);
exit;

// URLから直接パースする場合
$xml = simplexml_load_file($url);
print_r($xml);
exit;

// おまけ
$data = file_get_contents($url);
$xml = simplexml_load_string($data);
print_r($xml);
exit;


結果はどれも一緒だ



400 名前:デフォルトの名無しさん (ワッチョイ 86c7-Xbxe) [2020/08/26(水) 15:15:38 ID:rxHVxy4B0.net]
あい

401 名前:デフォルトの名無しさん mailto:sage [2020/08/26(水) 20:24:33.92 ID:d0L9I3XQ0.net]
ipアドレスが該当する1つであれば上手くいっていたのですが、
2つのうち、どちらかという場合がうまくうごきません。
||を使うとは思うのですが、どう考えれば良いのでしょうか?

if($_SERVER["REMOTE_ADDR"] === ("1.2.3.4" || "5.6.7.8") ) {
echo "hoge";
}

402 名前:蟻人間 mailto:sage [2020/08/26(水) 20:33:58.21 ID:pmFEpI1gd.net]
>>395
$remote = $_SERVER["REMOTE_ADDR"];
if ($remote == "1.2.3.4" || $remote == "5.6.7.8") {
echo "hoge";
}

403 名前:デフォルトの名無しさん mailto:sage [2020/08/26(水) 21:11:30.29 ID:d0L9I3XQ0.net]
>>396
ありがとうございます、うまく2箇所にて挙動が変わりました。

変数と評価することを1つの単位として、それを「または」するのですね。
グローバル変数を、ユーザ変数にしてからifをしていますが、
グローバル変数だけを使えば、$remoteを作らなくて済むと思いますが、
なにかしらセキュリティ的にやってはいけない行為なのでしょうか?

404 名前:デフォルトの名無しさん [2020/08/26(水) 22:17:39.89 ID:rxHVxy4B0.net]
クラウドワークスで仕事取る乗って相当ハードル高いですよね

405 名前:デフォルトの名無しさん mailto:sage [2020/08/26(水) 22:40:58.29 ID:DBhvvIDx0.net]
>>397
別に代入する必要は無いけど
長ったらしいものを何箇所にも書く場合には良く使いますね
こういう判定の場合は、別の書き方としてswitch文でやるのもアリかと

406 名前:デフォルトの名無しさん mailto:sage [2020/08/27(木) 08:39:43.14 ID:ILlGTI8s0.net]
>>399
いやin_arrayを使う。

407 名前:デフォルトの名無しさん mailto:sage [2020/08/27(木) 10:22:19.17 ID:kvOAK9FE0.net]
>>397
$_SERVERは環境変数といって環境によって
・定義されないことがある
・値が汚染されてることがある

ので注意

例えば $_SERVER['REMOTE_ADDR'] は、CLI環境では未定義になる

例えば $_SERVER['HTTP_USER_AGENT'](ユーザーエージェント) はクライアントの「自称」なのだから、
未定義の事もあるし、もし$_SERVER['HTTP_USER_AGENT']をそのまま表示してしまうプログラムだとXSS脆弱性にもなる

408 名前:デフォルトの名無しさん mailto:sage [2020/08/27(木) 10:24:09.30 ID:kvOAK9FE0.net]
で、>>401を踏まえてもし俺が書くとしたらこう書くな

// 拒否するIP => メモ
$deny = [
'104.18.231.150' => '5ch.net',
'176.10.99.200' => 'tor(accessnow.org)',
'23.20.100.217' => 'HTTP Proxy(amazonaws.com)',
];

$ip = getenv('REMOTE_ADDR');

if (isset($deny[$ip])) {
die("{$ip}は拒否");
}

こんな風にしておけば、拒否するIPが増えたり減ったりしても
$deny の値を書き換えるだけで済むので
※もちろん$denyは定数にしても可

409 名前:デフォルトの名無しさん mailto:sage [2020/08/27(木) 10:31:16.12 ID:kvOAK9FE0.net]
>>398
「慣れ」だと思うけど、少なくとも「プログラムを書けるだけ」では仕事は取れないのは間違いない

客の要望を汲み取って「提案」できる必要があるし、(根拠のある)要件定義書や見積書だって書けないと話にならない
※これにはこれぐらいのコストが発生するよと、客が納得できるよう説明する能力

そもそも客は実績を見て相手を選ぶのだから、実績のない人間なんか相手にされない
スクールの広告とかで、未経験でもプログラムを学んで副業で儲けよう!みたいなのがあるけど、
頭にお花畑が咲いてるとしか思えないw



410 名前:デフォルトの名無しさん mailto:sage [2020/08/27(木) 10:37:18.26 ID:ILlGTI8s0.net]
値側使わないなら無駄

$deny = [
'104.18.231.150',
'176.10.99.200',
'23.20.100.217',
];

$ip = getenv('REMOTE_ADDR');

if (in_array($ip,$deny)) {
throw new Exception($ip . 'は拒否');
}

こうだな。

>例えば $_SERVER['REMOTE_ADDR'] は、CLI環境では未定義になる
これを意識するならそもそも
php_sapi_nameでチェックロジックを組み込んでこの処理に行かないようにする。

411 名前:デフォルトの名無しさん [2020/08/27(木) 10:46:40.57 ID:Hzz3eOdRa.net]
テキスト処理のアプローチって、正規化、ラインで読み込んでデリミタで行列処理しかありませんか?
いつもいつも泥臭いなと思うんです。
僕が知らないだけかもと思い質問しました。

412 名前:デフォルトの名無しさん mailto:sage [2020/08/27(木) 10:55:40.76 ID:kvOAK9FE0.net]
>>405
具体的なコードを提示して

413 名前:デフォルトの名無しさん mailto:sage [2020/08/27(木) 10:57:34.30 ID:ILlGTI8s0.net]
>>405
そのやる処理による。

414 名前:デフォルトの名無しさん mailto:sage [2020/08/27(木) 11:53:13.05 ID:UMnMnU6h0.net]
データは、JSON, YAML, CSV とか

一方、単なるテキストは、行区切り

415 名前:デフォルトの名無しさん [2020/08/27(木) 12:17:35.39 ID:ygBOOYPT0.net]
>>403
実務経験ないと厳しいよね

416 名前:デフォルトの名無しさん [2020/08/28(金) 19:34:15.71 ID:7ps1QWM60.net]
$feed = simplexml_load_string($str);
echo $feed->channel->title . "<br />";

ブログのタイトルを取ってくるときにchannelという物を使いますが、これはプロパティということでいいんですか?gettypeではobjectということです。

またリファレンスが見つからないのですが、どこにあるでしょうか?
ximplexml_loadのページにはなかったです

417 名前:デフォルトの名無しさん mailto:sage [2020/08/28(金) 20:00:06.86 ID:Rmnqhg9P0.net]
この前の話の続きだろうからRSSで何かしたいのでしょうけど
https://www.php.net/manual/ja/function.simplexml-load-file.php
ちゃんと読んでます?
返り値はSimpleXMLElementクラスのオブジェクトを返しますとちゃんと書いてありますよね?
あくまでXMLをパースする為に存在するものなので
返された結果をprint_r()などで表示すれば内容がどうなっているかは確認出来る訳で
質問内容的にはRSSを取得して何かしたいのは分かりますが、それはRSSを理解した上で
更にPHPでどういう風にコードを書くかという話で順序が違うと思う訳ですが・・・

418 名前:デフォルトの名無しさん [2020/08/28(金) 20:22:40.99 ID:7ps1QWM60.net]
title channelはxmlのタグですね
 すんません(´・ω・`)

419 名前:デフォルトの名無しさん mailto:sage [2020/08/28(金) 21:27:52.31 ID:4PUroIuTa.net]
今からphpの勉強始めるならxampよりvagrantの方がいいですか?



420 名前:デフォルトの名無しさん (ワッチョイ 29f1-Xsyu) [2020/08/28(金) 22:02:43 ID:V3zcyyrc0.net]
>>413
今からphpの勉強始めるならxampよりvagrantの方がいいですよ

421 名前:デフォルトの名無しさん mailto:sage [2020/08/28(金) 22:56:19.70 ID:Rmnqhg9P0.net]
ローカル検証環境を構築するという事で話しています

virtual box+vagrantはLaravel Homesteadだと簡単に構築可能
https://readouble.com/laravel/6.x/ja/homestead.html
(別にLaravelを使わない場合でもPHPは勿論composerやweb開発に必要なものは大抵入ってる)
導入の仕方が分からないような人は大人しくxamppにしておくしかないかも

簡単なものならブラウザで試せるPHP環境で十分かも
https://paiza.io/ja/projects/new
など。コード共有や公開も出来るので5chでコードを晒すには便利かも






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<316KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef