【PHP】下らねぇ質問はID出して書き込みやがれ 86
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/07/31(金) 21:19:01ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 85
http://pc11.2ch.net/test/read.cgi/php/1245074032/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0628nobodyさん
2009/08/21(金) 18:02:50ID:???なら最初から黙っとけよ
0629610
2009/08/21(金) 18:13:11ID:WhelcFIUどうもありがとうございました
>>612
なるほどー、組をキーにした連想配列に入れて、そこから出力するわけですね
たしかにそっちのほうが楽かもしれない
>>613
すみません、スタックというのが理解できません。調べたんですがいまいちわからずで…
kumiの値を出力ごとにチェックして、例外(前のと違う)ときに次の組として処理し直すわけですね?
ちょっとやった事がない処理です。どうやったら良いのか考えてみます。。
もう一つ質問してもいいですか?
実はそれぞれのお返事をもらう前に、上で書いた自分なりの方法で「3)重複を省きながら$kumiAry配列にpush」を
とりあえずやっていたんですが、思ったように動きません。
$kumiAry = array();
foreach($allStudentAry as $key=>$value){
if(!in_array($kumiAry, $value['kumi'])){
array_push($kumiAry,$value['kumi']);
}
}
array_unique($kumiAry);
print_r($kumiAry);
結果、Array ( [0] => 3 [1] => 3 [2] => 3) と、思い切り重複してます。どこが問題なんでしょうか?
2つの方法で書き直す前に、スッキリしたいので教えてもらえると嬉しいです。
0630nobodyさん
2009/08/21(金) 18:37:11ID:???> すみません、スタックというのが理解できません。調べたんですがいまいちわからずで…
> kumiの値を出力ごとにチェックして、例外(前のと違う)ときに次の組として処理し直すわけですね?
> ちょっとやった事がない処理です。どうやったら良いのか考えてみます。。
基本的に上記の理解であってます。
1レコードづつ読み込んでは、出力用変数(メモリ)に出力形式なりで溜め込んで(これをスタックって言ってた)
kumi値が変わったところで溜め込んだものを出力。語弊を生むような語法を使ってしまいすいません。
>>617に言われたとおり昔からあるデータベース読み込みの基本的なアルゴリズムですよw
0632nobodyさん
2009/08/21(金) 21:33:12ID:???0633nobodyさん
2009/08/21(金) 22:43:05ID:???配列でできるじゃん
0634nobodyさん
2009/08/21(金) 22:47:53ID:PNbb36xjOS:windowsXP SP3 Pro
PHP:5.2.9
自PCに飛んでくるパケットをすべてキャプチャしたいです。
phpsnifferなるものを見つけて試したのですが、うまくいきませんでした。
(エラーは出ないが★部分で止まったまま何も起こらない)
http://eder.us/projects/phpsniffer/
----------プログラマの主要な処理を抜き出したのが以下です。
$sock = socket_create(AF_INET, SOCK_RAW, SOL_TCP);
socket_set_option($sock, SOL_SOCKET, SO_REUSEADDR, 1);
$socks=array($sock);
$w = $e = NULL;
socket_select($socks, $w, $e, NULL);//★
socket_recv($sock, $packet, 65536, 0);
var_dump($packet);
-----------------------------
〜〜板いけ 〜〜のサイト見ろなどでも構いませんので
どなたか回答なりヒントをいただけないでしょうか。
0635477
2009/08/22(土) 01:13:38ID:???0636634
2009/08/22(土) 02:01:56ID:DV5PllODヒントありがとう tcpdumpのwindows版でwindumpってのがあるみたい。
popenとの組み合わせでなんとかなるかも。
試してみます
0637nobodyさん
2009/08/22(土) 02:52:54ID:h6KUXpBq0638nobodyさん
2009/08/22(土) 02:56:11ID:h6KUXpBq0639nobodyさん
2009/08/22(土) 14:15:17ID:qs0RE9DRクラス中のメソッドを複数回実行してるんですが、最初の一回だけ動いて二回目以降は動きません。
なぜでしょうか?
myClass.class.php
=================================
class myClass{
function __construct(){
require_once("arrayList.php"); //配列リストの読み込み
$this->musicGenreAry = $musicGenreAry;//$musicGenreAryはarrayList.phpに定義されてます
}
function func($aryName,$num){
if($aryName =="music"){
return $this->musicGenreAry[$num];
}
}
}
読み込む側の.php
=================================
<?php
function smarty_modifier_NUMtoTEXT($num,$aryName){
require_once("myClass.class.php");//記入値・登録値を取得するクラスの読み込み
$myClass = new myClass();
echo $myClass->func($aryName,$num);
}
?>
すみません、続きます。
0640639
2009/08/22(土) 14:39:16ID:qs0RE9DR読み込み側の.phpを実行させるファイル test.tpl(smartyのテンプレートファイル)
=================================================
<p>
好きな音楽は、
1){$rsGakki.music1|NUMtoTEXT:'music'} (※修飾子プラグインとして実行しています)
2){$rsGakki.music2|NUMtoTEXT:'music'}
です
</p>
こんな感じです。
これで、1)ポップス とは出るものの、2) のあとに何も表示されず空欄になってしまいます。
なぜなんでしょうか。smarty修飾子プラグインのルールに何かあるんでしょうか?
検証として、別に用意した普通の .phpの中で、 $myClassObj->func('music',1)、$myClassObj->func('music',2)と
したところ、ちゃんと目標の値を2つとも出力します。
smarty固有の問題ならsmartyスレで聞くべきなんですが、requireとかスコープとかで
間違ってるのかも知れないと思い、ここで聞きました。
例えば読み込み側.phpの、require_once()のタイミングはあそこでいいんでしょうか?
基本的におかしな事をしてるような気がして、自分ではわからない状態です。
色んなジャンルにまたがっててすみません。よろしくお願いします
0641nobodyさん
2009/08/22(土) 14:50:44ID:???0642639
2009/08/22(土) 15:04:14ID:qs0RE9DRPHP5.2.6、SMARTY2.6、CentOS5.3 です
あと、今
function func($aryName,$num){
if($aryName =="music"){
print_r($this->musicGenreAry); //この行追加
print "abc";
return $this->musicGenreAry[$num];
}
}
したところ、print_rの結果を一度しか表示しないです(2回コールしてるので2回出るはず)
print "abc";は二回出力します。
配列が吹っ飛んでるのかな? なぜでしょうか。。
0643nobodyさん
2009/08/22(土) 15:55:35ID:TG4jntAzありがとうございます
今出先なので、帰宅したら試してみます!
0644nobodyさん
2009/08/22(土) 16:07:13ID:zxIfIvf2イメージとしてはこんな形式で…
$pstmt->bindParam(':foo', 'NOW()');
0645nobodyさん
2009/08/22(土) 16:12:51ID:???ってクエリをprepareして実行してnowdate ってカラムをとればいいじゃん。
0646nobodyさん
2009/08/22(土) 16:15:53ID:???fooがNOW()という条件を作りたいならSQL文でfoo = NOW()と書きゃいいだけだろ
根本的に考え方が間違ってる
0648nobodyさん
2009/08/22(土) 18:21:36ID:???fusianasaやって質問した奴は全部俺が答えてやる
0649fusianasa
2009/08/22(土) 18:30:22ID:???0650nobodyさん
2009/08/22(土) 18:41:54ID:kOYOIwI10651nobodyさん
2009/08/22(土) 19:18:40ID:v9riHruTってどういう意味でしたっけ?
0652651
2009/08/22(土) 19:32:14ID:v9riHruT申し訳ない
0653nobodyさん
2009/08/22(土) 19:34:44ID:????:は三項演算子。xml_parse関数の戻り値がtrueなら$this->documentを、falseならnullを返す。
文字列やら数値が返ってきた場合は、真偽値にキャストしてから判定する。0ならfalseとかな。
0654nobodyさん
2009/08/22(土) 19:45:28ID:???fusianasaって書いたらそのままそっくり言われた通りのことしかできないのはゆとりなんだよ
俺はfusianasanって書いてほしかったな
0655nobodyさん
2009/08/22(土) 20:33:26ID:839IHuhx郵便番号7桁の数字 1234567 を 123-4567
にしたいです。教えてください。
0656nobodyさん
2009/08/22(土) 21:36:21ID:???0657nobodyさん
2009/08/22(土) 22:16:18ID:839IHuhx0658nobodyさん
2009/08/22(土) 22:16:35ID:???こんな関数あるんだな、初めて知った
0661nobodyさん
2009/08/22(土) 22:32:21ID:LFACnGwwたとえば ./.../././ のようなパスを ../ に直したいのです
0663nobodyさん
2009/08/22(土) 23:14:03ID:nZ+TC59gこれってhttp requestでのpostと何が違うの
前者は、いちいち要求ヘッダ書くのが面倒くさいだけ?
0664nobodyさん
2009/08/22(土) 23:51:52ID:???俺ならもっと楽な方法を取る。
replace系使うまでもないかなと
$a = 1234567;
$[a][2]= $a[2]+"-";
0665nobodyさん
2009/08/23(日) 00:47:36ID:???0666nobodyさん
2009/08/23(日) 01:04:33ID:???0667nobodyさん
2009/08/23(日) 02:06:44ID:???くらいにやってることの意味がわかりやすく伝わるコードじゃない限り、
どれでも大差ないって思っちゃうなー。
0668nobodyさん
2009/08/23(日) 02:18:18ID:???入力された文字列の中にYouTubeのURLが複数存在しており
それらの中から 【 TnqXQSbLUQ1 or TnqXQSbLUQ1 】 という文字列を
取得し、 $match (配列)に一度に取得するにはどうすれば良いでしょうか?
【入力された内容】
動画1
http://www.youtube.com/watch?v=TnqXQSbLUQ1 ・・・ �@
動画2
http://www.youtube.com/watch?v=TnqXQSbLUQ2 ・・・ �A
【自分で書いてみた正規表現】
$pattern = "/http:\/\/www.youtube.com\/watch?v=\/i";
$string = "http://www.youtube.com/watch?v=TnqXQSbLUQU&feature=featured";
preg_match($pattern,$string,$match);
※最終的には $match に �@>TnqXQSbLUQ1 �A>TnqXQSbLUQ2
を取得したいです。
0669nobodyさん
2009/08/23(日) 02:33:15ID:???"/youtube\.\w+\/watch\?v=([\w-]+)/"
ドメインがyoutube.jpだったりwww.youtube.comだったりするのでこんなかんじかな
0670nobodyさん
2009/08/23(日) 02:44:57ID:???>>669
ありがとうございます。やりたい事が出来ました。
あと、正規表現について勉強をしているのですが、
"/youtube\.\w+\/watch\?v=([\w-]+)/"
のうち最後の「+」とは一体どういう意味なのでしょうか?
0671nobodyさん
2009/08/23(日) 02:49:03ID:???\wが英単語つまり[a-zA-Z_0-9]と同じ意味
+は直前の表現が1個以上あることを示す。\w+ならa-zA-Z_0-9のどれかが1つ以上あとはググれ
0672nobodyさん
2009/08/23(日) 03:00:14ID:RepkHWNsincludeでindex?q=item&a=1&b=2みたいな引数を読み込む方法はありませんでしょうか?
PHP4で絶対パス指定してた時代は出来たのですが!
怒ってます
0675nobodyさん
2009/08/23(日) 03:30:00ID:RepkHWNsはい4は読んでました。
たとえばキーワードで複数のAPI組み合わせてサイト作る機会って意外と多いと思うんですが
みなさんどうしてるんでしょうか。
PHP4に戻してCGI版PHP5にすればいけそうですか?
0677nobodyさん
2009/08/23(日) 04:01:33ID:RepkHWNsマジですか?それとも軽くあしらう感じの答えですか?マジだったらありがとう
0678nobodyさん
2009/08/23(日) 04:02:21ID:???0679nobodyさん
2009/08/23(日) 04:07:32ID:RepkHWNs時代の波にのりたいです
0680nobodyさん
2009/08/23(日) 04:08:55ID:???0681nobodyさん
2009/08/23(日) 04:18:49ID:???っていうのでできると思うのだけども
それは求めてるものとは違うんだろか?
0682nobodyさん
2009/08/23(日) 04:21:33ID:???>たとえばキーワードで複数のAPI組み合わせてサイト作る機会って意外と多いと思うんですが
いまいち言いたいことが分からないなー。
0683nobodyさん
2009/08/23(日) 12:04:55ID:AfcVjQ+e自分のグローバルipを取得したいんですが、
何か簡単な方法ないでしょうか。
$_SERVER["REMOTE_ADDR"]すると127.0.0.1になってしまうんです。
よろしくお願いします。
windowsです。
(phpはapacheでlocalhost以外では実行できない設定にしてあります)
exec("ipconfig")とやってみたらDefault Gatewayという項目しか出てきませんでした
0684nobodyさん
2009/08/23(日) 12:09:31ID:???0685nobodyさん
2009/08/23(日) 12:41:41ID:???そーいえばWEB魚拓やりたいけど容量がパンクしちゃう!!
とサガットさんが嘆いてました。
0686nobodyさん
2009/08/23(日) 13:04:27ID:???それだとnetにもひっかかるわな
悪意を持ってる人物がnetとかplとか空いてるドメインを見つけて使うかもしれないからこれはアウト
0688nobodyさん
2009/08/23(日) 15:41:38ID:Tby4tQsoループのなかで5番目の要素を見てるときに6番目をみるような…
0689nobodyさん
2009/08/23(日) 15:48:56ID:???0690nobodyさん
2009/08/23(日) 15:49:19ID:???0691nobodyさん
2009/08/23(日) 16:18:29ID:Tby4tQso//ここで$val['name']が『やまだ』を返すとき、次の$['name']と等しいか知りたいんです
}
foreachはどうもいまいち理解できません
くだ質ですみませんがお願いします
0694nobodyさん
2009/08/23(日) 16:35:45ID:???foreach($参照する変数 as $KEY名=>$値){
この書式をよく理解してないと思う。
この書式は、参照する配列変数の一次元目について、
キーと値の対応表を得るのに使う。要するに、配列の
キーがわからないときにそれをリストアップするものだよ。
なので、
$allAry が、
$allAry = array(
array('name'=>'yamada','age'=>15,addr=>'tokyo-to'),
array('name'=>'sato','age'=>18,addr=>'chiba-ken'));
というようなデータ構造の場合、$KEY名には、1、2しか
入ってこないし、$値には一名分の配列そのものしか
入らない。
もう、$allAryが、上記のような構造の場合、普通に
foreach($allAry as $one ){
とでもやって、一時変数に $one['name']の値を保存して
おいて逐次比較すればいいんじゃないかな。
0695nobodyさん
2009/08/23(日) 16:40:23ID:???$array[1][name] = "nanashi";
を foreach($array as $key => $val) で展開したら、$keyが0のとき$val['name']に
Yamadaが入るから、次のと比較するなら$key+1して$arrayを参照して比較すれば、
と思ったけど違ったんだっけか。
0700nobodyさん
2009/08/23(日) 19:08:29ID:???youtube.hoge
youtube.test
こんなサイトがあったとして、君はyoutubeってだけで何でもいいからIDを取っちゃうのかい?
0701nobodyさん
2009/08/23(日) 19:40:25ID:???[\w-]のIDからどうやって悪意のあるサイトに飛ぶんですか。
取ってるIDは[\w-]の範囲内ですよ
>>698
もしyoutube.comからHTMLをとってきてIDとるなら問題ないし。
ユーザーが入力したものだとしたらドメインが一致してもそのIDがでたらめなものかもしれないからドメインの問題じゃない
馬鹿ばかりだな
0703nobodyさん
2009/08/23(日) 19:54:29ID:???0704nobodyさん
2009/08/23(日) 20:58:34ID:???foreach($users as $key => $user){
if($users[$key] == $users[$key+1]){
// ここにやりたい処理を書く
}
}
0705nobodyさん
2009/08/23(日) 21:06:06ID:???foreach($users as $key => $user){
if($users[$key]['name'] == $users[$key+1]['name']){
// ここにやりたい処理を書く
}
}
0706nobodyさん
2009/08/23(日) 21:15:46ID:???そういう時はforでやるべし
0707nobodyさん
2009/08/23(日) 21:16:25ID:???マニュアルの配列関数のところ見れ
0710nobodyさん
2009/08/23(日) 21:37:56ID:???いいコードは書けませんよね
0711nobodyさん
2009/08/23(日) 22:00:24ID:???0712nobodyさん
2009/08/23(日) 22:23:38ID:nlDqD5AK使いやすいもの・参考になる簡単なもの無いですか?
やりたいことは、
・各ユーザに対する専用ページの保護
・ユーザ名・パスワードを入れた後はログアウトするまでユーザ専用ページ情報を開ける
・メールアドレスをユーザ名として使用
0713nobodyさん
2009/08/23(日) 22:26:14ID:???できればコードは「クラス」なものが良いのですが。
0714691
2009/08/23(日) 22:27:22ID:???参考にしてやってみます。ありがとう
0716nobodyさん
2009/08/23(日) 23:43:48ID:???基本から良く分かってないのでできればどのCMSのこのモジュールが分かりやすいよ
とかいうのがあればおききしたいのですが。
0717nobodyさん
2009/08/24(月) 01:27:27ID:???知ってる限りじゃDrupal。
静的ページを作るだけじゃかなり面倒臭いので
CMSのコンテンツマネージメント機能を利用する
ついでじゃなきゃお勧めできないけどw
つーか、PHPの標準機能だけでも結構あっさりと
できるでしょ。ユーザ管理DBを置いて、共通処理
で各ページ表示処理の手前で、認証やってダメな
ら弾けばいいんだから。Cookieにすればパラメータ
の受け渡しに迷うこともないし、セッションとしても
使えるし。
0719nobodyさん
2009/08/24(月) 02:17:17ID:???> つーか、PHPの標準機能だけでも結構あっさりとできるでしょ。
基本DB使ってセッションで_SESSION[USER]=ユーザ名があればログイン中
というふうにしたらメアドがネットにながれちゃうのかなぁ?とか。
んでなんか一回安全で一般的なユーザ管理の方法を学ぼうかなぁとおもいまして
サンプルを探しているわけです。
(できればフォームで登録申請→登録メアドにメールが届く→メール内URLをクリックで本登録とか機能も作りたい)
一応ネットでいくつか見てはみたのですが説明サンプル的なもので実践的でないもの
っぽかったので、これ使ってりゃそんな間違いないし簡単だよってものがあるのかお聞きしたかったのです。
>>718
100人程度登録・書き込みしてくれたらまぁいいかな程度なんですが。
Basic認証のことかなぁ?できればログインフォームでのログインクラスとして実装したいのですが。
0720nobodyさん
2009/08/24(月) 11:39:25ID:F/8gKHCCこれを一定(1バイトの文字*60文字=60バイト)の長さで一気に配列に格納したいのですがスマートな方法はありますか?
このデータは最初から最後まで60バイトで区切っていって丁度きっちり割り切れるデータです
0721nobodyさん
2009/08/24(月) 11:42:20ID:???0722nobodyさん
2009/08/24(月) 11:47:52ID:???データの先頭60バイトを切り取って、配列に格納
この処理をarray_mapを使って再帰的に処理すればforより短いコードで書ける
0723nobodyさん
2009/08/24(月) 11:58:07ID:???0724fusianasa
2009/08/24(月) 11:58:25ID:???str_split
0725nobodyさん
2009/08/24(月) 12:00:31ID:???0726nobodyさん
2009/08/24(月) 12:21:50ID:???スマートと言っても何がスマートなのかよくわからん
見た目をすっきりなのか
行数をすっきりなのか
まぁ、こんな手もある
20文字区切りだけどな
$teststr = '123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890';
$splitstr = chunk_split($teststr,20,"\n");
$bunkatu = split("\n",$splitstr);
0727nobodyさん
2009/08/24(月) 12:24:50ID:???それの処理が必要
■ このスレッドは過去ログ倉庫に格納されています