【PHP】下らねぇ質問はここに書き込みやがれ 8 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/03/15(水) 00:41:22.79ID:ko4BTSP20
PHPに関する下らない質問用避難スレです。
まず読むこと【PHPマニュアル】
http://www.php.net/manual/ja/

前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 7
http://echo.2ch.net/test/read.cgi/tech/1478657006/

次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
2017/10/21(土) 13:59:33.75ID:ZxQy+kqda
PHPとGoって何が違うの?LIGが自社サービス開発にGo言語を採用したお話
https://liginc.co.jp/284306
>Go言語がPHP 7の30倍、PHP 5.6と比べるとなんと82倍にも及ぶスピード

こんな記事を見つけました
OPcacheなどを使った場合と比べてどうなのでしょうか?
自分の考えるPHPの魅力は、
Javaからパクったオブジェクト指向、
標準の関数でウェブやデータベースアクセスが色々できて面倒くさくない、
といったものがありますが、
Goのようなモダン言語ならそのあたりもクリアしてるんじゃないかと思います
どうなのでしょうか?
2017/10/22(日) 07:41:34.63ID:6vhnloCO0
他スレへGo!
2017/10/22(日) 08:49:39.36ID:FIB6YbKNa
>>734
このbyetってところいいですね
cronも使えるし
2017/10/22(日) 11:43:49.92ID:hechdin40
>>738
うん、いいところだな、と思ったら肝心のsendmailが動いて無くてな・・・

フォームに書き込みがあるとリアルタイムでメールで通知してくれるプログラムを
PHPで組んでいたんだが、さてどうしたものか・・・
2017/10/22(日) 12:04:54.94ID:UtqkZ3+I0
例えばプロバイダ等のメールサーバを使えばいいんじゃないか?
もしくはAWSのSEDとかも少量なら無料。
2017/10/22(日) 12:08:52.24ID:hechdin40
>>740
PHP(しかも管理人でも無い末端のユーザーに)からGmailのSMTPサーバー利用できるの?
2017/10/22(日) 13:05:50.25ID:4HKeVMJe0
ソケット使ってサーバーとお話し合いすれば出来そう
2017/10/22(日) 18:46:14.40ID:N3puxcTpa
byetでRSSの出力をしようとしていたのですが、どうもうまくいかないので
調べていたのですが
byetに置かれたファイルを他のサーバから読むと、
This site requires Javascript to work, please enable Javascript in your browser
or use a browser with Javascript support
みたいなページに変わることに気づきました
ブラウザ以外のユーザエージェントから読まれることを禁じているようですね
やはり無料のサーバは何かしらあるのですね
ブラウザからPHPも編集できて、これこそプレイグラウンドやんと思ったのですが・・
2017/10/22(日) 19:45:40.22ID:UtqkZ3+I0
>>741
出来ない理由がないでしょ?
sendmailにこだわるんだったら話は別だけど
2017/10/22(日) 20:10:10.98ID:hechdin40
>>744
今までmail()を使ってメールを送信していたんだけど
この関数使ってsendmail以外を選ぶことって可能?
2017/10/23(月) 15:31:30.11ID:fxiC9AE30
>>735
面白そうなものを紹介していただき、どうもありがとうございます。
早速導入して検証してみようと思います。
2017/10/23(月) 18:29:23.56ID:n7tiHTCJ0
環境で詰まったというわけでなくプログラミングを勉強してる時に気になったことがあるのでテンプレ無しですがよろしくお願いします

インターフェースがクラスの設計書っていうのは説明読んでて理解出来たんだけど、例えば問い合わせインターフェースから最終的に問い合わせA,B,C,Dのクラスを作る前提で各クラスにはインターフェースで定義したメソッド1,2,3があるとします
メソッド2,3はクラスによって処理は違うけどメソッド1は処理が同じという場合はどう設計するのが良いのでしょうか?

共通の処理がなければ各クラス共にインターフェースを継承して作ればいいと思ったのですが、共通の処理がある場合まず問い合わせのベースとなるクラスを作ってそれを継承して各クラスを作るのが正解?
2017/10/23(月) 18:54:12.29ID:EbwleLYx0
>>747
抽象クラス
2017/10/23(月) 19:03:19.99ID:n7tiHTCJ0
>>748
もう少し本読み進めてから質問すればよかった・・・
ありがとうございます!
2017/10/23(月) 19:53:41.90ID:1HzbJqCQ0
>>747
トレイト
2017/10/23(月) 21:05:52.52ID:tJp0k/Rla
phpDocumentorの書き方ですが
クラスや関数や変数宣言ではない部分に書くコメントの場合でも
/**
*/
という記法で書くのでしょうか?
2017/10/23(月) 21:39:37.94ID:tJp0k/Rla
それを元にドキュメントを作るのがphpDocumentorの目的ですが
インターフェイスと関わらない部分のコメントはドキュメントに載らないので、
この記法で書く必要はない気もしますが
コメントの記法を揃えないと、それはそれで気持ち悪いです
2017/10/23(月) 23:29:47.09ID:Tv/dpLrE0
>>745
mailだったら何もしなくてもメールサーバー設定すりゃいいだろ
PHPのマニュアルにそのままgmailの送信サンプルあるのに何が不満なんだ?
あまり無料鯖は使わないほうだが規制にひっかかったことないぞ
2017/10/24(火) 00:07:15.92ID:8OgpvEir0
素直にswiftmailerとか使うのが賢いと思うの
2017/10/24(火) 20:09:11.71ID:4zuQt35qa
PHPのバッチプログラムをcronで実行させた時に
期待した通りに動きませんでした
調べたらcron時はカレントディレクトリが
スクリプトのあるディレクトリではなく実行ユーザのホームディレクトリになるので
ファイルが思わぬ場所に作成されていたのでした
ファイルアクセスは基本的に絶対パスでやるべきなのですね
ですが、include_onceは相対パスで書いていたのに正常に動作していました
絶対パスで書く方が安心できるとは思いますが、
includeの場合は気にしなくていいのでしょうか?
2017/10/24(火) 20:22:12.50ID:+CxSIN/Vd
>>755
データ展開を考えると、相対パスの方が便利だ。絶対パスがコロコロ変化する一方で、他方で相対パスが変化しないなら、相対パスの方がデプロイコストが低くなる。
2017/10/24(火) 20:24:10.80ID:vrotHuwu0
オレも相対パス派
2017/10/24(火) 20:38:04.82ID:+CxSIN/Vd
絶対パスを要求する場所では絶対パスを使う。相対パスを使ってもパスのリンケージが壊れない場所では相対パスを使う。
2017/10/24(火) 20:59:24.65ID:yBPDUg+O0
>>754
> 素直にswiftmailerとか使うのが賢いと思うの

swifmailer調べてみた、インストール作業が必要なのね
レンタルサーバーだからインストール作業はちょっと・・・
代わりにPhpmailerってのが使えるみたい。これはファイル置くだけでいいっぽいから。

>>753
> PHPのマニュアルにそのままgmailの送信サンプルあるのに何が不満なんだ?

これのことかな?
Byetってレンサバだからsendmail.iniやphp.iniの改変は不可能なんだわ(´・ω・`)

http://php.net/manual/ja/function.mail.php

Changes required in sendmail.ini

smtp_server=smtp.gmail.com
smtp_port=587
error_logfile=error.log
debug_logfile=debug.log
auth_username=your-gmail-id@gmail.com
auth_password=your-gmail-password
force_sender=your-gmail-id@gmail.com

Changes required in php.ini

SMTP=smtp.gmail.com
smtp_port=587
sendmail_from = your-gmail-id@gmail.com
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"
;sendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe"
2017/10/24(火) 21:09:39.54ID:Q75mHsE3a
>>759
composer使えよ
2017/10/24(火) 22:58:25.66ID:4zuQt35qa
絶対パスと言ってもベタ書きではなく__DIR__を使って
そのファイル基準の絶対パスを実行のたびに作るやり方なら
ファイルの場所が変わっても問題は起きにくいのでは?
でもたしかに絶対に絶対パスを使った方がいい、というわけでもありませんね
ありがとうございました
2017/10/25(水) 16:08:42.06ID:Cr59jy+d0
>>761
__DIR__ あたりで絶対パス取って
chdir()でカレントディレクトリはここだと決めて
それから後は全部相対パスを使うようにすればいい

そうすれば>>755で書いてるようなミスは絶対に起こらないし
テスト環境と本番環境の差異も簡単に吸収できる

あとライブラリの読み込みはなるべくオートローダーを使った方がいい
2017/10/25(水) 16:19:44.89ID:Cr59jy+d0
>>759
根本的に勘違いしてるっぽいし
あなたにレス付けてる人にも色々と問題があるので
今まで付いたレスは全部忘れた方がいい

まず、メールを送る方法は大雑把に2種類ある
1.自分のサーバーのMTAから送る方法
2.外部のSMTPサーバーを使って送る方法

あなたは今まで1の方法で送っていたが、
移転先では1の方法は使えないので2で送ると良い

例えば何らかのメールソフトを送ってメールを送ってると思うが、
それは2の方法なわけ(SMTPサーバーを設定するところがあるよね?)

だからPHPでも同じように2の方法で送れば良いだけ

お手軽なのはあなたも書いてるPHPMailer
WordPressなんかでも実績のあるライブラリで
メールソフトにSMTPサーバーを設定するのと同じ感覚で初心者にも簡単に使える

稀に脆弱性も見つかってるが、あなたの用途にはピッタリの筈


蛇足だが今時sendmailを使ってるところなんてまずない
PostfixあたりのMTAがsendmailと互換性があるように動いてるだけ
2017/10/25(水) 16:29:03.87ID:Cr59jy+d0
×何らかのメールソフトを送ってメールを送ってると思う
○何らかのメールソフトを「使って」メールを送ってると思う

訂正のついでに、ややトリッキーな手段としては、

A.MTAが使えるサーバーにおいた send.php
B.MTAが使えないサーバーおいた put.php

put.phpからsend.phpへ何らかの手段で送信メールの内容を送って(練習なら別にHTTP POSTとかでいい)、
send.phpを使ってメールを送るという手段なんかもある
APIみたいな使い方やね
2017/10/25(水) 17:44:25.69ID:hphlT9kR0
レンサバのlocal mtaが使えないような環境のことで質問されてるのに
php.ini編集してmail()関数で送れといってみたり(つか今時mail()関数でメール送るやつなんかいねーよw)
composer使えといってみたり(composerと書きたかっただけだろw)
別の質問で相対パスか絶対パスかとかさ(てかnamespaceとオートローダー使えw)
色々酷すぎるとおもってレスしようとしたらほとんど全部書かれていたでござる
2017/10/25(水) 18:05:21.53ID:Cr59jy+d0
使えないSEや仕事の遅いPGとかに多い

たったそれだけの事に何故わざわざそんな事をやるわけ?と問いただすと
結局は知識や経験不足で特定の方法しか知らないのが理由
色んな方法を知った上で相手に合わせた方法を提案するのがまともな人

SMTP使ってメールを送れば良いだけの話なのに
いやいや流石にそれは待てと長文も書きたくなるw
2017/10/25(水) 19:02:43.76ID:iV0okkYXd
ITベンダは複数の選択肢なんて用意しないよ
社内に事例がないことはやらない
2017/10/25(水) 20:09:10.79ID:eczzyF0za
>>762
カレントディレクトリを早い時点で設定していても
その後ライブラリの中で再設定されない保証もないのでは?
もちろん、そんなことするのはライブラリとして駄目ですが、
可能性としてないわけではありません
2017/10/25(水) 20:18:09.39ID:iHcJH4nT0
>>763
丁寧なレスありがとうm(_ _)m
おかげさまで安心してPHPMailer使えそう

ただ一点、SMTPサーバーのパスワードを平文で保存しないといけないのが気になるけど
ファイルのアクセス制御をしっかりかければ第三者から見られるわけでも無いし
レンタルサーバーの管理人からは見られちゃうけどそこは管理人を信用することにしますノシ
2017/10/25(水) 20:59:55.31ID:JdF6ntjza
そりゃ手でも入れられるけどPHPMailerにせよSwiftMailerにせよcomposerの方が楽じゃん
グローバルに入ってなくてもphpコマンドさえ叩ければ使えるし最悪ローカルで操作してvendorごとアップロードもまぁ出来るしな
2017/10/25(水) 21:08:30.16ID:BtMPlyUb0
やっぱり共有フォルダにデータ書き込むのは無理?
phpを対話ログイン可能なユーザーで実行するしかない?
2017/10/26(木) 09:22:38.49ID:gzc+jHaK0
>>770
そんな事はたぶんみんな分かってるよw
ITベンダ()とかいい出しちゃってる人までいるしもういいよw
2017/10/26(木) 09:32:12.60ID:gzc+jHaK0
>>768
ただのヘリクツだな
それを言い出すとオートローダーにしたって
元の定義を上書きするような挙動を後付で定義して
めちゃくちゃにすることだってできる場合もあるわけでして

それよりPHPerはもうちょい鯖の知識を付けた方がいい
そもそもPHPが何のユーザーでどういう権限で動いてるのか分かってたら
cronでミスなんかしないんだよね
2017/10/26(木) 09:40:31.55ID:gzc+jHaK0
>>768
あと元のレスの

> include_onceは相対パスで書いていたのに正常に動作
に誰も答えてないみだから書くけど
phpinfo()でいいからinclude_path確認してみ
たぶんそっちから読んでたんでしょ
includeのPHPマニュアル読むといいかもね

なのでinclude_pathを変えるなんて方法もないわけじゃないけど
普通はやらない
2017/10/26(木) 10:21:31.02ID:gzc+jHaK0
>>769
> SMTPサーバーのパスワードを平文で保存しないといけないのが気になる
色々方法はあるけど

1.SMTPサーバーの設定を配列とかにしとく
2.1にserialize()かけて文字列にする
3.2に可逆式の暗号化をかける
4.どこか適当な場所に保存

設定を読み込む時は4⇒1の順に逆の事をすればいいだけ
これだと数行で書けそうだし楽かも

さらに言えばgmailなんて無料でいくらでもアカウント作れるので
新しく捨てアカ作ってそのID/PASSを使えばいいw
2017/10/26(木) 21:02:24.29ID:tRiMi79S0
>>775
dd

ちゃんと暗号化のやり方ってあるのね
ありがとうノシ
2017/10/27(金) 03:22:58.82ID:4DLzKJg10
なんか自宅にテスト用のCentOSマシン欲しくならね?
2017/10/27(金) 06:29:55.24ID:1txrbLzrd
シェル使えるレン鯖でいいだろ
もしくはVPS
2017/10/27(金) 07:15:15.66ID:XNLqI4Wk0
item(0)->length; //itemは配列としてitem[0]のstrlen
item->length; //itemは配列としてcount(item)のような感じ
プロパティの部分はメソッドでもいいですが
こういうのってどうやって実装するんですか?
$thisを返すとメソッドチェーンが出来るのはわかるのですが
$this配列にしないと返せないしそうするとitem(0)[0]みたいな参照になってしまって
カッコ悪いしそんな表記は見たこともないので
2017/10/27(金) 07:31:39.80ID:XNLqI4Wk0
忘れてましたが環境は5.4でお願いします
2017/10/27(金) 15:57:31.80ID:Q4ZTdDse0
>>777
一人でやるならDocker使ってCentOSイメージ使ってコンテナ立てるのが一番楽で早くて手軽だ
VirtualBoxとかVagrantの時代は過ぎた
2017/10/27(金) 17:25:24.66ID:nbs4Y8NPa
curlにオブジェクト指向のインターフェイスはないのだろうと思って調べていて
CURLFileというのを見つけたのですが、何か思っていたのと違います
普通curlへのアクセス自体をオブジェクト指向化しますよね?
http://php.net/manual/ja/curlfile.construct.php
を見ると、
オブジェクトを使って手続き型の処理をしていてびびりました
どうなっているのでしょうか?
2017/10/27(金) 18:05:39.00ID:wVlMe2dFa
無名関数のuseに配列の要素を渡したいんですがuse($hoge['piyo'])と書くとエラーになります
一旦別の変数に代入するか配列ごと渡さないとダメですかね?
2017/10/27(金) 23:11:25.54ID:diny/lofa
CURLOPT_RETURNTRANSFER
をtrueにしたら結果が文字列で返ってくる→分かる
falseにしたら結果が標準出力に出力される→は?
curl実行の際の出力を抑制するためにはtrueにするのが必須になりますが
結果取得のためのtrueなのか出力抑制のためのtrueなのかがはっきりせず、
イケてないと言わざるを得ません
「標準関数なのだから相当の試行錯誤の結果作られているのだろう」
という予想がPHPの場合は通用しませんね?
2017/10/28(土) 01:33:02.73ID:YoZCditl0
>>783
そのまま$hogeで渡して中で展開するか、別の変数に入れるか

>>784
通用しない
2017/10/28(土) 07:55:58.34ID:QrqdVCJa0
hogeとかbarって何なんです?
2017/10/28(土) 23:08:37.14ID:qzigG1UZ0
読んで字のごとく
2017/10/28(土) 23:11:10.51ID:TWx2GtJid
>>786
特に意味がない名前を付けたものだ。名前の意味は気にしないでいい。ただ名前は他と区別するためにある。
2017/10/28(土) 23:13:38.01ID:QDh5TOuc0
こっそりhageとかに変える
2017/10/29(日) 01:45:02.78ID:scCjgZM20
この$hogeーーー!
2017/10/29(日) 01:55:09.22ID:wekqFwi10
PHPのデバッグの仕方教えておくれ!!
2017/10/29(日) 02:02:51.30ID:k1qoOab2d
>>791
警告とエラーの違いはわかるか? テストでは警告はすべて出力させる。
PHP7ではassertが使えるので、活用するように。
2017/10/29(日) 02:11:50.01ID:k1qoOab2d
ちなみにPHPのIDEはPhpStormがオススメだ。
2017/10/29(日) 02:25:50.82ID:k1qoOab2d
C/C++などでも一般に言えることだが、IDEのデバッグ機能はユーザーによって実行を制御したり、変数の中身を確認できる。例えば、指定した行で実行を止めたり、少しずつ実行させたりできる。
2017/10/29(日) 10:41:47.50ID:htd7uCcc0
file_get_contentsを何回かやるので、関数化しました。
header部分も欲しいので、$http_response_headerも一緒にreturnするようにしたのですが、
関数化前と違うものが返ってくるようになりました。
キャッシュか何か残ってるのでしょうか?何が原因でしょう?
Set-Cookieヘッダを使うので、返ってくるものが違って挙動がうまくいかなくなって困ってます。
ベタ書きすればうまく動作するのですが、コードがどうしても長くなって読みづらくて。
2017/10/29(日) 10:46:01.97ID:htd7uCcc0
補足です。関数内で何回かfile_get_contentsをやってるわけではありません。
関数内では1回しか使っていません。
前後に共通のコードが書かれてたり、file_get_contentsのリクエストヘッダを少し変えてます。
2017/10/29(日) 11:10:05.24ID:k1qoOab2d
二つの戻り値をどういう風にreturnしてる?
2017/10/29(日) 11:25:49.77ID:k1qoOab2d
ソースをアップするのが確実だけど、公開できないの?
2017/10/29(日) 11:26:37.79ID:htd7uCcc0
>>797
配列です。
return [ $http_response_header, $body ];

おかしいのは、どうもSet-CookieのセッションIDが変わってしまってるのが原因のようです。
'http' => [
 'header' => "Cookie: " . $this->getCookie($url) . "\r\n"
]
毎回このようなクッキー送るコンテキストは指定して、
file_get_contentsしてから、新規のクッキーは、
$this->setCookie($url, $http_response_header);
という具合にしてからreturnしています。

ベタ書きだとちゃんと動作します。
2017/10/29(日) 11:31:50.57ID:htd7uCcc0
>>798
private function request($url, $context = null) {
 $http_request_header = null;
 if (!$context) {
 $cookie = $this->getCookie($url);
 $context = [
  'http' => [
   'method' => 'GET',
   'protcol_version' => 1.1,
   'ignore_errors' => true,
   'header' => 'Host: ' . parse_url($url)['host'] . "\r\n",
   'Cookie: ' . $cookie . "\r\n",
   "Connection: close\r\n"
  ]
 ];
 $body = file_get_contents($url, false, stream_context_create($context));
 $this->setCookie($url, $http_response_header);
 return [$http_response_header, $body];
}
こんな感じです。
2017/10/29(日) 11:33:41.53ID:htd7uCcc0
インデント調整ミスってif文の閉じ消してしまいました。

private function request($url, $context = null) {
 $http_request_header = null;
 if (!$context) {
  $cookie = $this->getCookie($url);
  $context = [
   'http' => [
    'method' => 'GET',
    'protcol_version' => 1.1,
    'ignore_errors' => true,
    'header' => 'Host: ' . parse_url($url)['host'] . "\r\n",
    'Cookie: ' . $cookie . "\r\n",
    "Connection: close\r\n"
   ]
  ];
 }
 $body = file_get_contents($url, false, stream_context_create($context));
 $this->setCookie($url, $http_response_header);
 return [$http_response_header, $body];
}
2017/10/29(日) 12:34:43.84ID:k1qoOab2d
Cookie に =>がない。
2017/10/29(日) 12:35:56.57ID:k1qoOab2d
じゃなかった。カンマとピリオドを間違えている。文字列をつなげるのはピリオド。
2017/10/29(日) 12:40:46.31ID:htd7uCcc0
>>802
レスありがとうございます。
そこはドット演算子で連結しているのでそれで問題ありません。
って・・・ドットじゃなくてカンマになってる。
お恥ずかしい。エラーにもならないので気づきませんでした。
どうもありがとうございます。無事動くようになりました。
2017/10/29(日) 12:41:28.48ID:htd7uCcc0
リロードしてませんでした。感謝!
2017/10/29(日) 15:35:37.96ID:DVVe4DD2M
IDEとxdebug使ってのデバッグがイマイチ使いこなせないわ
毎回設定してはめんどくさくてやめる
フレームワークとか作る仕事ならまだしも、
フレームワーク使ってつくるもんだと変数トレースしたいとか
ブレイクポイント使いたいとかあまりない気がしてて
複雑怪奇なシステムとか作るなら必要なんだろうが
iOSアプリとかのSwiftとかだとないと厳しいけどさ
2017/10/29(日) 15:38:34.24ID:k1qoOab2d
モダンブラウザなら、ブラウザからでもデバッグできるし、色んな機能があるよ。
2017/10/29(日) 17:24:25.73ID:xmzrQ2Sc0
もうechoと打たなくていいんだ!
809デフォルトの名無しさん (ワッチョイ 6beb-Jryx)
垢版 |
2017/10/29(日) 17:27:03.74ID:lZu6ERZg0
有料のPHPStormじゃなくて
無料のnetbeans使ってバグ全部取ったのに
ブラウザが真っ白のまま
もう何がなんだか・・・
2017/10/29(日) 22:41:34.91ID:RyqL6Q1z0
バグ全部取りきれてないんだろ
2017/10/29(日) 22:51:58.54ID:k1qoOab2d
>>809
警告をオンにしてhtmlソース見ろよ
2017/10/30(月) 00:11:23.58ID:UPoKErNA0
>>809
netbeansでもxdebug使えるからトレースすりゃいいんじゃないの?
バグじゃなくてエラーを全部なくしただけでしょ?
本当のデバッグはそこがスタートだよ
どうせエラー表示したら500エラーが出てるよ

>>806
作り方がうまいからじゃねーの
まぁ、新規で使うことは少ないけど、改修や保守開発だと必須じゃね
2017/10/30(月) 00:11:52.95ID:UPoKErNA0
>>809
あ、PHPってちゃんとログにエラー残してるからログも見ろよ
2017/10/30(月) 00:12:19.06ID:UPoKErNA0
>>809
PHPのログ、フレームワークのログをみて
さらに自分でログ出力もしっかりしてな
2017/10/30(月) 00:56:01.34ID:JH+/yPWP0
>>806
フレームワークの時点でバグが潰されてるから
FW使う一方ならそんな
深いデバッグ要らないってのはあるな

>>812
保守だとプログラムを理解しづらいからね
2017/10/30(月) 05:43:01.84ID:OFPISIv40
テンプレート言語でフレームワークを使うという冗長
2017/10/30(月) 14:24:02.82ID:6Zg8+NGr0
Google Apps Scriptで
http://www.pre-practice.net/2017/10/line-bot_22.html?spref=tw
ここを参考にLINEBOTを作っていて、
文章中の特定の文字列に反応して返答するようにしたのですが、
(1)
else if (strpos(input_text, "寒い") !== false ) {
reply_text = "もう冬だね";
  }

これを挿入しても反応してくれません。
その上、その下部に配置した

(2)
else {
reply_text = "答えられません";
}
が反応しなくなります。
(1)を削除すると、(2)は動きます。
(1)のstrposを正常に稼働させるには
何がいけないのでしょうか教えてください。
お願い致します。
2017/10/30(月) 14:33:01.75ID:6Zg8+NGr0
>>817
訂正
(2)だからというわけではなく、
(1)があるとその下部のelseがすべて無効になります
削除すると、すべてのelseが反応するようになります。
2017/10/30(月) 14:52:57.48ID:xmd0Xo8s0
データベースに記事のデータを無数に登録しておき、それをPHPで読み出して
ブログサイトのように表示するみたいなプログラムを作りたいのですが
そういうのってWebサイトではありがちな気がするのですが、何か簡単に実現できる
フレームワークやツール的なものってあるのでしょうか
2017/10/30(月) 15:21:21.27ID:TBBBeiZLa
>>817
Google Apps Scriptってよく知らんけどJavaScript互換じゃないの?
2017/10/30(月) 15:38:04.49ID:6Zg8+NGr0
javaScriptがわからないのですが、
上記の>>817のソースをそっくりそのままコピペすると、正常に動くんです

else if (strpos(input_text, "寒い") !== false ) {
reply_text = "もう冬だね";
  }

ほかは何もいじらずこれだけを挿入するのですが、「寒い」のメッセージに無反応なんです。
2017/10/30(月) 15:51:26.23ID:6Zg8+NGr0
>>817質問変えます
http://www.pre-practice.net/2017/10/line-bot_22.html?spref=tw

上記URLのソースコードを使用して、
文章中に「寒い」が含まれるメッセージが来たら
「冬ですね」と返答する事ができるようにするにはどうしたらいいかお願いですから教えてください。
2017/10/30(月) 16:09:26.30ID:6Zg8+NGr0
////////////////////////////
var input_text = e.message.text;
var reply_text = "";
if (input_text == "こんにちは") {
reply_text = "元気?";
}
/////////////////////////

現状は「こんにちは」のテキストに完全一致でしか「元気?」と出力しない状態です。
これを文章中に「こんにちは」が含まれる部分一致の場合に「元気?」と出力する方法教えてください。
連投すんません、このくだらない問題に2日無駄にしてつらいです。
2017/10/30(月) 16:14:49.49ID:sK+sC+Du0
>>822
strpos このメソッドって存在しますか?

文章中に"寒い"があるかどうかを判定するだけなら

input_text.match(/寒い/)

で判定出来るんじゃないかな?
2017/10/30(月) 16:31:42.84ID:vEI+28/Ca
>>823
えっと、間違ってたらごめんだけど、見た感じ>>817はJavaScriptのコードで、strposはphpの関数だから、存在しない関数を使ってるせいでエラーになってるんじゃないかな
containsやindexOfみたいなJavaScriptの関数で判定してみたらどうでしょうか
2017/10/30(月) 16:45:24.01ID:6Zg8+NGr0
>>824
>>825
ありがとうありがとうありがとうありがとう
ヒントくださって本当にありがとう
行き詰まって調べたくても何もなかったからどうにもできなかった
その二つ調べて頑張ります本当にありがとう
2017/10/30(月) 17:15:37.08ID:JH+/yPWP0
>>819
ワードプレス
2017/10/30(月) 17:34:29.87ID:6Zg8+NGr0
>>824
>>825
     )、._人_人__,.イ.、._人_人_人
   <´ indexOf使ったら動いたよ!! >
    ⌒ v'⌒ヽr -、_  ,r v'⌒ヽr ' ⌒
// // ///:: <   _,ノ`' 、ヽ、_ ノ  ;;;ヽ  //
///// /::::   (y○')`ヽ) ( ´(y○')    ;;|  /
// //,|:::     ( ( /    ヽ) )+ あ   ;| /
/ // |:::     +  ) )|~ ̄ ̄~.|( (   り   ;;;|// ////
/// :|::       ( (||||! i: |||! !| |) ) が    ;;;|// ///
////|::::    +   U | |||| !! !!||| :U と ;;; ;;;| ///
////|:::::       | |!!||l ll|| !! !!| |  う ;;;;;;| ////
// / ヽ:::::       | ! || | ||!!|    ;;;;;;/// //
// // ゝ:::::::: :   | `ー----−' |__////
2017/10/30(月) 18:06:32.72ID:ki8heFlTa
>>828
良かったけど、そもそもなぜここで聞いたんだw
がんばってください
2017/10/30(月) 18:11:09.44ID:sK+sC+Du0
優しいスレだなあ、ほっこり
2017/10/30(月) 19:38:09.54ID:EhzU2sDl0
>>806
初心者がいきなりフレームワークという最近の傾向には俺も疑問

フレームワークを知らなかったからこそ、
初めてチーム組んでフレームワークを使った開発をした時に
その必要性や有難味を理解できるもんだ

酷いのになるとフレームワークの使い方しか知らなくて
全く潰しの効かない人とかいるしね
最近のruby界隈は結構酷いのがいる(もちろんPHPよりはましだがw)
2017/10/30(月) 19:48:34.15ID:EhzU2sDl0
>>782,784
どうなってる?と言われても知らんがなw

そう思うなら自分で作ればいいじゃない
curlの関数群にOOPなインターフェースを与えるのなんて簡単な事だろ

CURLFileがいけてない?
PHPのcurlなんて単なるlibcurlのうっすーいラッパーに過ぎないが
PHPのcurlは「@」の扱いからして全然いけてないよw

他人が設計したクラスに文句垂れるだけでろくにラッパークラスも作れない人なの?
違うでしょ?

他のレス見ても君はPHPには明らかに向いてない
君の性格にはPhthonがおすすめ

PHPなんてクソ言語はさっさと捨てて
ついでにこんな糞スレにも二度と戻って来ない方がいい
2017/10/30(月) 21:00:34.82ID:6Zg8+NGr0
ほんとマジありがとうございました。
2017/10/30(月) 21:19:35.82ID:6OnifbBOM
>>831
まあ、言いたいことは分かるよ
でも、たとえばAPCキャッシュがどういう理屈で速い機械語書き出してるか?
とかそういうことまで把握してるペチパーなんてほんの一握りだろう
それでもみんなAPCキャッシュ使ってるからな
どういう層までやりこんで覚えるかは時代の流れもあるんじゃないかなぁ
慢性的な技術者不足だし、この傾向はどんどん進んでいくと思うけどね
2017/10/31(火) 01:49:29.16ID:TDK9QP8S0
APCなんて5.3の頃にとっくに滅んだろ・・・。
2017/10/31(火) 07:33:32.84ID:hw8F/Qhk0
>>827
やはりワードプレスってそういうものなんですか
どうもです
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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