【PHP】下らねぇ質問はID出して書き込みやがれ 118
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2012/04/24(火) 01:29:22.24ID:yStuoiA/過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 117
http://kohada.2ch.net/test/read.cgi/php/1332346244/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 他言語について言及しないこと(特にJavaは禁句)。PHPオンリーの回答者が不快になります。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0545512
2012/05/08(火) 08:42:20.63ID:xzOVLEVdやりたいこととしては、POSTされたメッセージをhtmlspecilcharを通した文字列から
電話番号を切り出して、そこに携帯電話で発信用のリンクをはるタグを追記して元のメッセージに
戻したいのです。
なので、単純に抜き出すpreg_matchではなくspiltが良いのかなと思ったのですが。
>>514
勉強して、不要だとわかり削りました。
>>518
桁数については、メッセージを打ち込む人間が決まっており、住んでいる地域の番号および
携帯電話のみなので、シビアなチェックというよりは、多少ノイズが入ってもよいかと思っています。
preg_match_all('/0[0-9]{1,4}-[0-9]{1,4}-[0-9]{4}/s', $text, $out);
とりあえず上記で、$text内(改行あり文字列)から電話番号の文字列のみ配列に格納できましたが、
その前後の文字列も切り出して格納することができず悩んでいます
切り分けにはexplodeかと思ったのですが、正規表現は使えないようですし・・・
$out = preg_split('/0[0-9]{1,4}-[0-9]{1,4}-[0-9]{4}/s', $text);
これだと、電話番号が抜かれた文字列だけ配列に入ってしまいます
preg_splitとpreg_match_allの合わせ技でできそうな気もするのですが、もっとスマートな方法があれば・・・
0546nobodyさん
2012/05/08(火) 09:40:28.24ID:???やりたい事を一番始めに書くべきだったな
<?php
$link = function ($m) { return sprintf('<a href="tel:%s">%s</a>', preg_replace('/[^0-9]/', '', $m[0]), $m[0]); };
echo preg_replace_callback('/090-[0-9]{4}-[0-9]{4}/', $link, '電話番号は090-0000-0000です。');
0547nobodyさん
2012/05/08(火) 10:22:00.23ID:???0548nobodyさん
2012/05/08(火) 10:33:50.30ID:yJ0tU0lo【PHPのバージョン】5.3以上
【質問内容】
こちらでも聞いたのですが5日以上解決しないのでこちらで聞かせてください。
http://toro.2ch.net/test/read.cgi/tech/1224449899/
http://kage.monazilla.org/system_DOLIB100.html
ここ見て書いてみたんですがなぜか動かないです。
どこを直せばいいか教えて欲しいです。
やりたいことは2chに●でログインしてdatを取得したいと思っています。
ログイン
<?php
header("Status: X-2ch-UA: kage/1.00");
ini_set('user_agent', 'User-Agent: DOLIB/1.00');
$url = 'https://2chv.tora3.net/futen.cgi';
$data = array(
'ID' => '[email protected]',
'PW' => 'romiromi',
);
$options = array('http' => array(
'method' => 'POST',
'content' => http_build_query($data),
));
$contents = file_get_contents($url, false, stream_context_create($options));
echo $contents;
?>
続きます
0549nobodyさん
2012/05/08(火) 10:34:42.46ID:???↓のdat取得ができない(gzipにしてもできなかった)
<?php
$sid="取得したセッションID";
$sid=urlencode($sid);
$fp = fsockopen('toro.2ch.net', 80);
$out = array(
'GET /test/offlaw.cgi?bbs=tech&key=1224449899&sid=$sid HTTP/1.0',
'Host: toro.2ch.net',
'User-Agent: Monazilla/1.00',
);
fwrite($fp, implode($out, "\r\n") . "\r\n\r\n");
ob_start();
fpassthru($fp);
$response = ob_get_clean();
fclose($fp);
$response = explode("\r\n\r\n", $response, 2);
echo 'ヘッダ<pre>' . $response[0] . '</pre>';
echo '中身<pre>' . mb_convert_encoding($response[1] , "UTF-8", "Shift_JIS"). '</pre>';
exit;
?>
なにかヒントでもいいのでお願いします。
0550nobodyさん
2012/05/08(火) 10:35:18.51ID:yJ0tU0lo0552nobodyさん
2012/05/08(火) 11:21:50.84ID:???が多い。それで回答者が逆質問をしたり
悪口を言ったりする。それを前もって思
い描く力が絶望的に欠如してるに違いない。
スーパーハッカーだけが意図を理解できる。
レアなそういう神が颯爽と登場する予感。
0553nobodyさん
2012/05/08(火) 11:30:27.50ID:???0554nobodyさん
2012/05/08(火) 11:40:00.69ID:???お前は荒らすことしかできねーのかw
つまんないんだよ、だからPHPerはゴミばっかりって言われるんじゃないかな?
かっこを閉じ忘れるヤツとかも多いしさ、
れんこんみたいに穴だらけのプログラムしか書けない
さらに極めつけはドヤ顔で関係ないコード貼ったりするヤツなw
まぁ、他の言語ができない万年初心者のPHPerなら仕方ないかなwww
0555nobodyさん
2012/05/08(火) 11:43:16.88ID:???0556nobodyさん
2012/05/08(火) 11:53:47.10ID:???fpassthru($fp);
の時点で何と返ってきているのか確認する
あと>>548の削除依頼を出しとけよ
0560nobodyさん
2012/05/08(火) 13:56:30.53ID:???is_null
誰がこんな名前にしたんだ
0561nobodyさん
2012/05/08(火) 14:21:23.20ID:???0562nobodyさん
2012/05/08(火) 14:24:23.30ID:Htg8wbhp惚れそうです
やりたいことがほぼできました
ただ改行が無視された結果が返ってくるので、\nをexplodeで分割、それぞれの配列で置換をする形でよいものでしょうか?
0564nobodyさん
2012/05/08(火) 14:50:50.27ID:???546じゃねーけど、入力する内容によって改行コードが\r\nになっていることもあるから気を付けるんだっ
0565nobodyさん
2012/05/08(火) 15:07:55.35ID:???0566nobodyさん
2012/05/08(火) 15:50:50.72ID:???0568sage
2012/05/08(火) 20:46:23.42ID:???0569nobodyさん
2012/05/08(火) 22:13:58.74ID:???0570nobodyさん
2012/05/08(火) 22:17:13.80ID:???0571nobodyさん
2012/05/08(火) 22:26:26.26ID:???0572nobodyさん
2012/05/08(火) 22:29:08.94ID:???0573nobodyさん
2012/05/08(火) 22:42:39.20ID:???0574nobodyさん
2012/05/08(火) 22:45:40.69ID:???0575nobodyさん
2012/05/08(火) 22:49:19.81ID:???0576nobodyさん
2012/05/08(火) 23:27:23.78ID:???0577nobodyさん
2012/05/09(水) 00:05:52.09ID:???<| |>
0578nobodyさん
2012/05/09(水) 00:19:43.39ID:???0579nobodyさん
2012/05/09(水) 00:54:14.14ID:???0580nobodyさん
2012/05/09(水) 01:17:29.28ID:Fi26kzxnたとえば配列のアクセスでつかう [] を自分のクラスでも使えるようにしたいです。
0581nobodyさん
2012/05/09(水) 01:40:09.37ID:???ただし配列アクセスを実装することはできる
0582nobodyさん
2012/05/09(水) 01:42:34.06ID:???0583nobodyさん
2012/05/09(水) 01:58:49.65ID:???0584nobodyさん
2012/05/09(水) 02:07:05.89ID:???0586nobodyさん
2012/05/09(水) 02:28:52.13ID:???次に「タッカラプト・ポッポルンガ・プピリット・パロ」と唱えます
0587nobodyさん
2012/05/09(水) 03:36:00.00ID:???0588nobodyさん
2012/05/09(水) 09:00:05.62ID:???http://php.net/manual/ja/class.arrayaccess.php
0589nobodyさん
2012/05/09(水) 09:49:56.18ID:???spl_autoload($className);
$ins = new $className;
echo $ins->val.'<br>';
spl_autoloadは__autoloadの設定用?
new $className;だけで__autoloadが呼ばれるから意味がある
わけでそれをいちいち定義しないといけなくなると以下と
変わらない気がするのですが・・・
function load_class($className){
require $className.".php";
}
0590nobodyさん
2012/05/09(水) 10:15:19.80ID:kEquIQgXで、テキストファイルに出力させてhtmlとして表示させたいのですが、どうも文字化けしてしまいます
ぐぐると、SJISをSJIS-WINにという記事は見かけますが、改善しませんでした
当方、本サーバとテストサーバがあり、本サーバでは文字化けしません
両サーバはほぼ同じように設定しており、php.iniも同じ設定にしてあります
(1点違うのは、phpのバージョン 本サーバ5.3.8 テストサーバ5.3.10)
テキスト出力させるソースも同じ、エンコードも同じです。
書き出したhtmlファイルもnkfでチェックすると、本サーバとテストサーバと同じShiftJISで
同じように出力されており、webサーバがhtml出力される際にうまくいってないかと思うのですが・・・
他にチェックするべきところがありますでしょうか?
0591nobodyさん
2012/05/09(水) 11:01:45.02ID:???ブラウザがエンコード間違ってるだけじゃ?
0592nobodyさん
2012/05/09(水) 11:12:46.73ID:???ここを読めば存在理由が分かるだろう
http://www.php.net/manual/ja/function.spl-autoload-register.php#refsect1-function.spl-autoload-register-parameters
>>590
HTTPヘッダの Content-Type: text/html; charset=「ここ」
HTMLドキュメントの <meta http-equiv="Content-Type" content="text/html; charset=「ここ」">
は確認したかい
0593590
2012/05/09(水) 12:22:39.34ID:kEquIQgXブラウザのエンコードは「シフトJIS」にチェックがついていますが、
UTF-8を選択してもシフトJISを選択しても化けたまま変わらず(IE、FireFoxともに)
サーバー上のファイルは、nkfでチェックするとShift_JIS、viで開いてもShift_JISの状態で
端末上では当然化けます(サーバーがUTF-8なので)
nkfでShift-JISにoverwriteすると、ブラウザ上でも化けなくなるのですが、
別のPHPファイル実行時に出力させてるのでnkfでいちいち変換するわけにもいかず・・・
<html><head>
<meta http-equiv='Content-Type' content='text/html; charset=Shift_JIS'>
<title>LeXgy[W</title></head> ←テストページといれてます
<body>
eXg
</body></html>
0594nobodyさん
2012/05/09(水) 13:10:16.32ID:???mb_convert_encoding("テストページ", "SJIS", "UTF-8");
のように、 UTF-8からSJISへの変換を掛けてSJIS環境で見ると、そーいう文字になるな。
0595nobodyさん
2012/05/09(水) 13:26:20.13ID:kEquIQgX出力先のディレクトリの.htaccessに以下を入れていました
AddType application/x-httpd-php .htm .html
phpファイルもHTML出力されるようにしたんですが、今回文字化けてしているのは
htmlファイル(PHP実行時にfopenで書き出し)だったので、気づきませんでした
とりあえず上の記述をコメントアウトして文字化けを解消できたものの、同ディレクトリにある
phpファイルがhtml出力できなくなってしまいました
0596nobodyさん
2012/05/09(水) 13:28:45.96ID:???0597nobodyさん
2012/05/09(水) 13:42:42.57ID:???0598nobodyさん
2012/05/09(水) 13:46:33.42ID:???利用者にhoge.htmlというページを開かせてるけど、実際にはphpファイルを実行させるために
.htaccessを設定してました
0599nobodyさん
2012/05/09(水) 13:53:52.42ID:???整理すると、
.htaccessの設定は、今回出力させているhtmlファイル(他のphpファイル実行時にfputs関数で
書き出している)とは全く関係ありません
.htaccessの設定は、以前に別のhtmlファイル(見かけ上htmlだがphpを実行させる)のために作っておいたものです
その設定の影響を受け、今回の文字化けが発生していたようでした
今回の書き出しの文字化けを解消するには、htaccessの設定をやめればよいのですが、
それをすると以前から設定していたphpを見かけ上htmlで開かせることができなくなってしまったと・・・
0603nobodyさん
2012/05/09(水) 17:50:04.76ID:kEquIQgX携帯電話向けに作っているので、Shift_JISにしたいんです
利用者も年齢層がばらばらで、携帯も古い人から新しい人といるので・・・
0604nobodyさん
2012/05/09(水) 17:56:14.35ID:???AddDefaultCharsetが効いてるとか
0605nobodyさん
2012/05/09(水) 18:03:47.00ID:???0606nobodyさん
2012/05/09(水) 18:18:18.94ID:???0607nobodyさん
2012/05/09(水) 18:33:43.25ID:???phpにヘッダーを吐かせるしか無いかもね。
0608nobodyさん
2012/05/09(水) 19:59:21.39ID:???> 端末上では当然化けます(サーバーがUTF-8なので)
そんなことないよ。
>>599
テストサーバと本サーバで.htaccessに差があったということ?
あとの心当たりは>>604と同じ。確認方法は>>592
0609nobodyさん
2012/05/09(水) 21:04:54.82ID:???0610nobodyさん
2012/05/09(水) 22:35:23.39ID:twtG8Gyg0612nobodyさん
2012/05/09(水) 23:00:55.97ID:???0616nobodyさん
2012/05/09(水) 23:08:44.56ID:???0617nobodyさん
2012/05/09(水) 23:14:58.95ID:???0618nobodyさん
2012/05/10(木) 00:07:08.16ID:QTsnYVOg教えていただいたタグを少し編集してできました!
ありがとうございました。
0619nobodyさん
2012/05/10(木) 00:16:03.97ID:???>>590
> php.iniも同じ設定にしてあります
らしいよ
>>618
間違えたコード片あげてごめんね。できてよかった
0621nobodyさん
2012/05/10(木) 00:49:58.43ID:???というのは言い訳でメモ帳で書いているのでshis以外だとめんどくさい
0622nobodyさん
2012/05/10(木) 01:09:09.47ID:???0623nobodyさん
2012/05/10(木) 03:25:45.90ID:???少なくともphp.iniは同じだけど
> 両サーバはほぼ同じように設定しており
らしいし、どうも>>599があやしいので、>>608を書いてみたよ。
0624nobodyさん
2012/05/10(木) 07:42:27.87ID:tDrvx8QuAddDefaultCharsetはともに無効、Apacheのバージョンも同じです
>>607
phpにヘッダーをはかせております
>>609
output_handlerも共に同じです
>>608 >>620
結局違うところは、.htaccessがあるかないかの違いでした(本サーバには置いていません)
.htaccessの設定でなぜcharsetに影響がでるんでしょうか・・・
0625nobodyさん
2012/05/10(木) 10:17:42.00ID:???だからそoutput_handlerは何になってたのかきいてるんだけど
素のhtmlファイルまでphp処理するようになってたのが唯一の違いなら、
html出力するときにmb_output_handler通ってるせいで化けたと考えるのが自然じゃないの?
0626nobodyさん
2012/05/10(木) 10:44:27.79ID:???ブラウザからそのhtmlファイルを要求したときにphp通って(output_handlerの設定で)mb_output_handlerかかって、
ファイルの文字コードはshiftJISなのにUTF-8としてエンコードされてから送られてきてるんじゃないか、
って意味ね
ここまで書いて自信ないんだけど、
phpファイルのphpブロック外でもoutput_handlerの影響受けるよね?
0627nobodyさん
2012/05/10(木) 13:27:00.40ID:???なめてるの?
0628nobodyさん
2012/05/10(木) 13:33:51.57ID:???馬鹿には現状で充分なんです
0630nobodyさん
2012/05/10(木) 13:55:11.87ID:???0631nobodyさん
2012/05/10(木) 14:23:00.73ID:0ynRr1Caphp.ini内
output_handler = mb_output_handler
となっています
説明すごくわかりやすく感謝です
htmlファイルとして出力したものを、htaccessの設定故にそれをphpとして内部で実行しようとするから
内部エンコードのUTF-8になってブラウザに出力されてしまうのですね・・・
phpで処理させてるときにShift_JISで処理させるとなれうと、mb_output_handler("SJIS")のような
記述がいりますでしょうか? php.iniに設定すると他ファイルに影響するので
そのファイルだけに適用させるにはどうしたらよいものでしょう?
htmlファイルの頭に<?php mb_output_handlerの設定?>あたりを書き出しておけばよいのでしょうか
0633nobodyさん
2012/05/10(木) 14:59:48.12ID:???2010年頃のT004でダメだったって記事があるんだが
2008年頃のW60代が生き残ることもあって
まだダメっぽい。
0634nobodyさん
2012/05/10(木) 15:01:39.05ID:???0635nobodyさん
2012/05/10(木) 15:27:02.48ID:0ynRr1Caphpファイルを見かけ上htmlで実行させることが異様ってことでしょうか・・・?
とりあえずhtmlヘッダ前に以下の記述を差し込むことでhtaccessを有効にしたまま問題なく表示できるようになりました
<?php mb_internal_encoding(\"SJIS\"); ?>
0636nobodyさん
2012/05/10(木) 15:55:23.59ID:???T004 ブラウザが7.2でも XHTMLじゃなきゃだめだよ。
6.2のが結構あるんだけど、
今年の7月に 周波数再編でかなり減ります。
http://www.au.kddi.com/seihin/cdma1x/
0637nobodyさん
2012/05/10(木) 16:03:28.41ID:???0638nobodyさん
2012/05/10(木) 17:09:32.94ID:???0640nobodyさん
2012/05/10(木) 18:31:40.04ID:???0642nobodyさん
2012/05/10(木) 21:32:42.47ID:???レスもらう態度じゃねーよ。>>631お前のことだよ
0643nobodyさん
2012/05/10(木) 22:02:22.84ID:???0644nobodyさん
2012/05/11(金) 00:58:45.84ID:8qmfX98h「カートに商品を入れる」という処理をセッションとMySQLでやっていまして、
誰がどの商品を追加したかトークン用のセッションを与えて判別しています。
セッションなのでブラウザを閉じれば消えるわけですが、
DBの情報はそのまま残っています。
こういう場合、DBにレコードが溜まり続けてしまいますが、
cronか何かで定期的に削除するのでしょうか?
それとも何か良い設計方法があれば教えてください。
■ このスレッドは過去ログ倉庫に格納されています