トップページ⇒php
1001コメント296KB

【PHP】下らねぇ質問はID出して書き込みやがれ 106

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2011/04/29(金) 17:11:00.40ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 105
http://hibari.2ch.net/test/read.cgi/php/1300302034/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0175nobodyさん2011/05/05(木) 14:16:15.86ID:???
>>171
bool rename ( string $oldname , string $newname [, resource $context ] )
0176nobodyさん2011/05/05(木) 14:58:13.61ID:???
>>171
rename関数をリネームすることは出来ないと思うよ
0177nobodyさん2011/05/05(木) 16:10:54.66ID:GTW3BxXo
解決しました
>>176
わざわざ質問スレで揚げ足とってるんですね
暇そうでうらやましいです
0178nobodyさん2011/05/05(木) 17:17:01.05ID:???
そもそも何を質問したかったんだ?
0179nobodyさん2011/05/05(木) 20:15:51.38ID:???
rename関数の引数で正規表現を使えるかどうかを知りたかったんだと思うよ
0180nobodyさん2011/05/06(金) 04:55:18.36ID:???
rename関数をリネームしたかったんだと思うよ
0181nobodyさん2011/05/06(金) 09:41:40.92ID:???
http://jp.php.net/manual/ja/function.rename.php
マニュアル読むべし

できないっぽいの
0182nobodyさん2011/05/06(金) 09:43:58.05ID:???
>>179
それなら試せば済むことだし、違うんじゃね
0183nobodyさん2011/05/06(金) 15:11:09.59ID:UIYBv0HT
フォームから送信された値を暗号化(難読化)してファイルに保存したいのですが、
指定文字に対して暗号化データを生成するような関数ってあるのでしょうか?

イメージとしては↓な感じです。
$angou_key = 'a12s5f';
$value = angou($_POST['text'], $angou_key);
// $valueは「pw4usbue45dfd54we」みたいになっている
0184nobodyさん2011/05/06(金) 15:16:02.61ID:???
暗号文 f1s2a5
これを解読するためのキー 3x9a

一応できる
01851842011/05/06(金) 15:16:55.35ID:???
ここはあんまりアルゴリズムに詳しい人がいないから助言は期待しないほうがいいかもね
ム板で聞けばいいよ
0186nobodyさん2011/05/06(金) 15:27:03.85ID:???
可逆暗号しらね

暗号のアルゴリズムだから別にPHPで聞くことでもないかも?
0187nobodyさん2011/05/06(金) 15:46:56.71ID:UIYBv0HT
>>184-186
と言う事は、>>183で書いたような便利な関数は無い(アルゴリズムを作れ)
って事ですね。勉強してみます
0188nobodyさん2011/05/06(金) 15:47:49.22ID:???
そういう事です
0189nobodyさん2011/05/06(金) 15:55:04.39ID:???
mcrypt使えばいいじゃん
0190。 ◆oDupeixhZv52 2011/05/06(金) 15:55:55.57ID:???
$angou_key = 'a12s5f';
$text = "PHP angou test";
$key = str_pad("",strlen($text),$angou_key);
print $angou = $text ^ $key ;
print $angou ^ $key;

表示できない文字になるとか、1バイトじゃない文字は知らね
0191nobodyさん2011/05/06(金) 16:03:42.21ID:???
>>183
PHP: mdecrypt_generic - Manual
http://www.php.net/manual/ja/function.mdecrypt-generic.php
0192nobodyさん2011/05/06(金) 16:13:19.56ID:UIYBv0HT
>>188-191
追加でありがとうございます。

mcryptはサーバによって使えない場合があるんですよ。
php-mcryptをインストールする必要があったりで。

個人情報などをCSVファイルに保存する時に暗号化(難読化)して
出力時に復元する可逆の方法を探してみました。
DB使えば良い事なんでしょうが、何でも実験したくて・・。
もう少し勉強してみます。
0193nobodyさん2011/05/06(金) 16:19:14.67ID:???
>>192
PEAR も入ってない?
http://pear.php.net/packages.php?catpid=6&catname=Encryption
0194nobodyさん2011/05/06(金) 16:36:38.68ID:???
>>192
自分で暗号・復号関数を作れば?
目的が難読化で暗号強度がさほど高くなくて良いなら、
文字コードのビット演算や入れ替えなどを組み合わせれば難読化としては十分。
自分でアルゴリズムを考えるのも面白いよ
0195nobodyさん2011/05/06(金) 16:38:12.31ID:???
個人情報で実験しないでくれ・・・
0196nobodyさん2011/05/06(金) 17:23:20.00ID:???
>>192
くれぐれも公開ディレクトリに個人情報を置かないでくれ
0197nobodyさん2011/05/06(金) 18:53:31.70ID:???
実験なのにそこまで突っ込むのかw

>>192
素直にPEARのライブラリ使えよ。
鯖に入って無くても単体で使えるぞ
0198144-1452011/05/06(金) 19:41:44.61ID:???
正規表現スレの方に行ってきます。
0199nobodyさん2011/05/06(金) 23:07:17.95ID:???
>>196
できるよ。
以上。
はい、次。
0200nobodyさん2011/05/06(金) 23:23:54.89ID:???
>>199
何ができるんだろ
0201nobodyさん2011/05/06(金) 23:31:59.42ID:???
できるできないって無駄なレスいらね
0202nobodyさん2011/05/06(金) 23:32:51.75ID:???
あ
0203nobodyさん2011/05/06(金) 23:46:59.46ID:???
公開ディレクトリに置くことも、非公開ディレクトリの777なディレクトリに置くこともできるってことかと
02041962011/05/07(土) 00:14:21.83ID:???
できると知った上で「公開ディレクトリに個人情報を置かないでくれ」と忠告したわけだが
できないことはいわない
0205nobodyさん2011/05/07(土) 00:36:55.11ID:???
僕は公開ディレクトリに個人情報を置くことができるよ!(えっへん!)
ってことだろうきっと
0206nobodyさん2011/05/07(土) 02:32:39.85ID:???
>>204
>>203につっこんでやれよ
0207nobodyさん2011/05/07(土) 12:49:40.31ID:???
>>206
何をつっこむんだろ
0208nobodyさん2011/05/07(土) 12:56:43.97ID:???
そりゃあもちろん
0209nobodyさん2011/05/07(土) 14:04:46.00ID:???
叩きの矛先を>>199から剃らしたいだけだろ
0210nobodyさん2011/05/07(土) 16:43:49.90ID:ER7LbHop
質問です。
指定したキーでarrayからキーと値を抽出するような
関数(組み込み関数)ってありますか?
下記のようなイメージです。

$array = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
$keys = array('a', 'c', 'x');
$result = xxx($array, $keys); // $result == array('a' => 1, 'c' => 3, 'x' => null);
0211nobodyさん2011/05/07(土) 20:33:41.32ID:???
>>210
$array = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
$keys = array('a', 'c', 'x');
$result = array_intersect_key(array_merge(array_fill_keys($keys, null), $array), array_flip($keys));
var_dump($result);

array(3) {
["a"]=>
int(1)
["c"]=>
int(3)
["x"]=>
NULL
}
0212nobodyさん2011/05/07(土) 23:30:11.98ID:???
>>211
var_dump( array_map(function($v)use($array,$keys){return $array[$keys[$v]];},array_flip($keys)));
0213。2011/05/07(土) 23:49:12.97ID:???
foreach($keys as $v)$result[$v]=$array[$v];
0214nobodyさん2011/05/08(日) 04:44:49.89ID:???
>>213
警告でないっけ
0215nobodyさん2011/05/08(日) 14:53:19.37ID:KpR/icVU
echo date('Y/m/d H:i:s', mktime(date('H'), date('i'), date('s'), date('m'), date('d'), date('Y')));
これをDateTimeクラスで書き直すとどのように書けるでしょうか?
0216nobodyさん2011/05/08(日) 15:13:25.00ID:???
>>215
少しは自分で考えようぜ
0217nobodyさん2011/05/08(日) 15:18:29.63ID:Kdg15VS1
分かんないくせにw
0218nobodyさん2011/05/08(日) 15:23:27.70ID:???
>>217
お前のような生意気な奴には絶対に教えん
0219nobodyさん2011/05/08(日) 18:40:33.78ID:???
>>215
http://www.php.net/manual/ja/datetime.construct.php#example-574
0220nobodyさん2011/05/08(日) 19:21:57.74ID:???
>>219
現在の日時の取得だけ手続き型のdate()を使わないとダメなのかと思ってましたがオブジェクト作成した時点で日時が入るんですね
勉強になりました

>>261 >>218
荒らさないで頂けますか 他の方に迷惑かかるので
0221nobodyさん2011/05/08(日) 19:25:50.24ID:???
ロングパスキター
02222102011/05/08(日) 19:36:12.23ID:nypXO16H
みなさんありがとうございます。

>>211
>>212
すごい
自分の頭では覚えておけないのが難点です…

>>213
やっぱりそういう形の方が簡単ですね。

>>214
Noticeは出ますねー


組み込み関数一発で、というのがあればなーと思っていたんですが
みなさんのコードを参考にユーザ関数を定義することにします。
ありがとうございました。
0223nobodyさん2011/05/08(日) 22:02:25.91ID:E4q6d9os
クッキーで配列の取り扱いについて相談です。

$array = array('aaa','bbb');
setcookie('Test[0]', $array, time()+600);
print_r($_COOKIE['Test']);

としたのですが、何も表示されません。
そして画面を更新したらクッキーに配列が入っています。

クッキーって画面を一度更新しないと値が入らないのでしょうか?
0224nobodyさん2011/05/08(日) 22:12:32.31ID:???
そうです
0225nobodyさん2011/05/08(日) 22:15:02.68ID:???
>>223

サーバ「おいしいクッキーが焼けたよ」
↓
俺のPC「ありがとう頂きます」
↓
サーバ「あれ?何味のクッキー送ったか忘れたから教えてくれない?」
↓
俺のPC「いいよ、じゃあF5押して送るよ」
0226nobodyさん2011/05/08(日) 22:15:55.40ID:???
その例えは微妙w
0227nobodyさん2011/05/08(日) 22:18:21.21ID:???
おじいさんとおばあさんで例えてください
0228nobodyさん2011/05/08(日) 22:21:36.63ID:???
>>227
おじいさん「くっきーけ」
おばあさん「く」
おじいさん「うめか?」
おばあさん「うめ」
0229nobodyさん2011/05/08(日) 22:26:05.21ID:???
ドラゴンボールで例えてください
0230nobodyさん2011/05/09(月) 00:44:24.89ID:9NI2nLcl
日記のアプリを作ってるんですが、mixiでやってるような
絵文字入力ツール(モジュール?)ってないでしょうか?
携帯3キャリアの絵文字対応していると嬉しいです
相互変換できることが最優先なので、絵文字の数はそんなに多くなくても良いです

ググって調べていますがなかなか良いのがなくて…
何か知っているのがあれば、教えてください。お願いします
0231nobodyさん2011/05/09(月) 00:52:03.70ID:???
>>230
http://www.google.com/search?hl=ja&q=PHP+%E7%B5%B5%E6%96%87%E5%AD%97
?
0232nobodyさん2011/05/09(月) 00:55:18.27ID:???
>>231
html emojiっての見つけました
スレ汚しすみませんでした
0233nobodyさん2011/05/09(月) 00:58:58.37ID:???
ググったとか嘘は書かないようにしようね
0234nobodyさん2011/05/09(月) 02:39:50.56ID:???
ググってはいると思うよ。ただググり方が悪いだけで。
0235nobodyさん2011/05/09(月) 05:04:02.37ID:???
グリとグラ
0236nobodyさん2011/05/09(月) 11:42:41.56ID:LKDBKV6E
ここの掲示板を設置したいのですが
http://www.sanadake.info/sch/bbs/
パーミッションが分からず困っています
サーバーはFC2レンタルサーバーライトを使っています

とりあえず設置は出来たのですが
パスワードの変更や掲示板の作成はエラーです
エラーは366とか367とかです
その時のパーミッションはフォルダ、phpファイル共に705にしてました

どなたか教えてください
0237。 ◆oDupeixhZv52 2011/05/09(月) 12:14:17.03ID:???
707にして動くんならそういうことだよ。
0238nobodyさん2011/05/09(月) 12:36:09.20ID:???
phpファイルを705ってつりですか?w
0239nobodyさん2011/05/09(月) 12:55:41.69ID:LKDBKV6E
>237
707試しましたが掲示板作成できませんでした
>238
全く釣りじゃないですよ
パーミッションの設定に書いてあるんです
0240nobodyさん2011/05/09(月) 13:05:29.79ID:LKDBKV6E
フォルダ777、phpファイル666も試してみましたが
管理画面にはいくのですがパスワードの変更、掲示板作成はできません
0241nobodyさん2011/05/09(月) 13:21:20.38ID:???
嘘乙だろw
phpファイルを755とか705にする事は絶対ねえよ
0242nobodyさん2011/05/09(月) 13:23:25.51ID:???
実行ファイルとして実行するならあり得るが、掲示板とかならないだろなw

0243nobodyさん2011/05/09(月) 13:35:27.18ID:LKDBKV6E
>241
さくらサーバーのとこにはあるんですよ
http://www.sanadake.info/sch/permission.php
0244nobodyさん2011/05/09(月) 16:11:02.84ID:v5ubEZZH
"/(['\"])(.+)['\"]/"
最後の終端文字を最初の文字に合わせるにはどうすればいい?
"aaaa' これでマッチしてしまう。
0245nobodyさん2011/05/09(月) 16:31:47.71ID:???
>>244
正規表現スレ行け
0246nobodyさん2011/05/09(月) 17:20:57.76ID:???
わざわざ正規表現スレ行くほどのもんか?
"/(['\"])(.+)\\1/"
0247nobodyさん2011/05/09(月) 17:22:59.23ID:???
×正規表現スレ行け
○俺の知能を超えた質問だったから正規表現スレ行け
02482442011/05/09(月) 17:33:32.96ID:v5ubEZZH
>>246
どうもありがとうございます!
\\としないと駄目なんですね。。勉強になりました。
0249nobodyさん2011/05/09(月) 20:11:09.72ID:???
>>246-247
正規表現スレの存在意義を否定する発言は容認できない
お前らに正義の鉄槌が下るであろう
0250nobodyさん2011/05/09(月) 20:57:29.83ID:???
微妙
0251nobodyさん2011/05/10(火) 02:16:06.02ID:???
>>239
フォルダの707は設置フォルダとDBフォルダ両方。
366行にmkdirがある。
フォルダが作成されていて、707でなければ chmod追加。
0252nobodyさん2011/05/10(火) 11:43:02.21ID:arsXiqXK
動ナビが重いのでfile_get_contentsでhtmlだけ取得したいと思います
リストで更新動画の画像へのurlと更新内容のテキストを並べていきたいのですが
htmlを見てもどのように取得したらよいか悩んでます
どなたかアドバイスお願いします
0253nobodyさん2011/05/10(火) 12:01:48.72ID:???
>>252
pearにsimple htmldom parser ってのがあるからこれ使うと便利だよ
http://simplehtmldom.sourceforge.net/
タグとかidとかでjavascrypt見たいに要素を引っ張れる
0254nobodyさん2011/05/10(火) 12:06:52.55ID:???
ごめん>>253は別にpearじゃなかった
0255nobodyさん2011/05/10(火) 12:10:59.02ID:arsXiqXK
失礼しました
パーサー事体はなんとか出来たのですが
htmlが汚くてどのように取得したらよいかわからず。。。
0256nobodyさん2011/05/10(火) 15:10:31.59ID:vf7zGTim
$get = '<a href="test.txt">sample</a>';
preg_match_all('!<a href="(.+?)">(.+?)</a>!', $get, $match);
print_r($match);

結果
Array
(
[0] => Array([0] => <a href="test.txt">sample</a>)
[1] => Array([0] => test.txt)
[2] => Array([0] => sample)
)

こうなるのですが$match[0]の部分を取らず、キャプチャしたところだけ取る方法ってございませんか
Array
(
[0] => Array([0] => test.txt)
[1] => Array([0] => sample)
)
が理想なんですが
0257nobodyさん2011/05/10(火) 15:35:51.61ID:lETsiVC1
preg_matchでいろいろマッチさせて後で利用したい場合、皆さんどうやってますか?
preg_matchがマッチした回数しか返してくれないのが歯がゆいというかなんというか。

preg_match('|<title>(.*?)</title>|', $html, $title);
preg_match('|<h1>(.*?)</h1>|', $html, $h1);
user_function($title[1], $h1[1]);
↑新しい変数を作りすぎて、どこかでかぶる恐れがある

preg_match('|<title>(.*?)</title>|', $html, $match['title']);
preg_match('|<h1>(.*?)</h1>|', $html, $match['h1']);
user_function($match['title'][1], $match['h1'][1]);
↑煩雑だけどこれがベスト?
0258nobodyさん2011/05/10(火) 15:43:49.26ID:???
>>257
後でどう利用するかいわないと何ともいえない気がするけど、このあたり?
http://www.php.net/manual/ja/function.preg-match-all.php
http://www.php.net/manual/ja/function.preg-replace-callback.php
0259nobodyさん2011/05/10(火) 15:47:08.13ID:???
>>257
変数を作りすぎたくないなら、連想配列に格納すればいいんじゃない?
0260nobodyさん2011/05/10(火) 15:47:12.13ID:IrqArrYA
$array = array();
$a = array("りんご","ごりら","らっぱ");
$b = array("食べ物","動物","楽器");

$aと$bを$array()に格納したいのですが
$array[0]['a'] りんご
$array[0]['b'] 食べ物
$array[1]['a'] ごりら
$array[1]['b'] 動物
$array[2]['a'] らっぱ
$array[2]['b'] 楽器
な感じにする方法をご教示お願いいたします
0261nobodyさん2011/05/10(火) 15:48:19.57ID:IrqArrYA
$arrayに$aと$bを入れるときに、その変数名をキーにしてマージしたいということです
0262nobodyさん2011/05/10(火) 15:51:03.92ID:???
array_combine
0263nobodyさん2011/05/10(火) 15:59:59.70ID:lETsiVC1
>>258-259
レスありがとうございます。質問者のボクが質問の趣旨を理解していませんでした。

1: preg_match('|<title>(.*?)</title>|', $html, $match['title']);
2: preg_match('|<h1>(.*?)</h1>|', $html, $match['h1']);
3: user_function($match['title'][1], $match['h1'][1]);

1:の瞬間、$match['title']の[0]は不要なのに、切り捨てる手段がないのがもどかしい。
なので3:の時点まで「$match['title']は[0]と[1]の配列だけど必要なのは[1]だ」ということを覚えておかなくちゃいけない。

仮にpreg_matchが$macthを返すような関数なら、こう書けてとてもスッキリするのに…。
1: $match['title'] = current(preg_match('|<title>(.*?)</title>|', $html));
2: $match['h1'] = current(preg_match('|<h1>(.*?)</h1>|', $html));
3: user_function($match['title'], $match['h1']);

Rubyならこうかな?
1: $match['title'] = preg_match('|<title>(.*?)</title>|', $html)[1];

みたいなことを思ったのです。
0264nobodyさん2011/05/10(火) 16:13:31.00ID:???
>>263
なるほどね。合点がいった。
ユーザ定義関数を作るのがいいんじゃないかな。

function getFirstChildTextContent ($tagName, $html) { return preg_match('|<'.$tagName.'>(.*?)</'.$tagName.'>|', $html, $match) ? $match[1] : ''; }
$html = '<title>test title</title><h1>heading</h1>';
echo getFirstChildTextContent('title', $html)."\r\n".getFirstChildTextContent('h1', $html);
02652522011/05/10(火) 16:33:52.92ID:???
すみません、解決できました
これでエロサーフィン生活が快適になりました
0266。 ◆oDupeixhZv52 2011/05/10(火) 16:52:33.02ID:???
>>260
foreach($a as $var=>$val) $array[$var]["a"] =$val;
foreach($b as $var=>$val) $array[$var]["b"] =$val;
0267nobodyさん2011/05/10(火) 17:05:32.31ID:???
>>265
そのスクリプトは公開しろ!
0268nobodyさん2011/05/10(火) 17:07:13.27ID:???
>>263
> 1: $match['title'] = preg_match('|<title>(.*?)</title>|', $html)[1];
マッチしなかったときの例外処理ができてないんじゃない?
どっちにしろどのようにマッチしたかは把握しておく必要がある。
同系統の処理は関数でまとめればいくらか見通しは良くなると思うけど。
02692652011/05/10(火) 17:17:46.17ID:???
>>267
さすがにここに書くのもあれなので
アダルトサイトのスレのどこかなら公開しますが
0270nobodyさん2011/05/10(火) 18:51:15.52ID:???
>>263
0を切り捨てられればいいのに、とはいうが、まずは0に欲しいものだけが入る正規表現にすれば良いのでは。
1: preg_match('|(?<=<title>)(?:.*?)(?=</title>)|', $html, $match['title']);
2: preg_match('|(?<=<h1>)(?:.*?)(?=</h1>)|', $html, $match['h1']);
3: user_function($match['title'][0], $match['h1'][0]);

> 仮にpreg_matchが$macthを返すような関数なら、
ここについては解決しないけどね。

ID出さないスレでも似たようなことあったけど、最近は正規表現がブームなのかね。
0271nobodyさん2011/05/10(火) 18:59:18.59ID:???
両方含まれてる前提ならこうするのも手かな。

$pattern = '|
<title>(?P<title>.*?)</title>
.*
<h1>(?P<h1>.*?)</h1>
|x';
preg_match($pattern, $html, $match);
print_r($match);
0272nobodyさん2011/05/10(火) 21:33:26.43ID:4eJoj+GD
ローカルのhttp://localhost/link.phpからweb上のサイトに飛ぶのですが
リファラーを送信したくないのです
訪問先のサイトにhttp://localhost/link.phpからの足跡が残るので。
ローカルからアクセスしたのがばれないようにする方法ってございませんか?
どこかのページで方法を見た記憶があるのですが
0273nobodyさん2011/05/10(火) 21:35:26.69ID:???
ぐぐった?
0274nobodyさん2011/05/10(火) 21:47:14.76ID:???
PHPと関係ないです
■ このスレッドは過去ログ倉庫に格納されています