【PHP】下らねぇ質問はID出して書き込みやがれ 113
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2011/11/29(火) 19:55:27.17ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 112
http://hibari.2ch.net/test/read.cgi/php/1320005469/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0353nobodyさん
2011/12/13(火) 19:18:45.55ID:???バリデーションやら、これでよろしいですか?画面やら
DBにインサートやら正直キレそうなんですけど
これらを、簡単に制作することはできないんですか?
0354353
2011/12/13(火) 19:22:20.94ID:B3orhDGR0357nobodyさん
2011/12/13(火) 19:46:52.95ID:???0360nobodyさん
2011/12/13(火) 20:06:35.36ID:Y6ZWV3Gc0363nobodyさん
2011/12/13(火) 21:47:52.86ID:???どっちもきめえ
よって引き分けノーゲーム
0364nobodyさん
2011/12/13(火) 22:15:19.17ID:M1gnknNtそれが簡単にできるようになったらプログラマの仕事が無くなるだろ?
0365nobodyさん
2011/12/13(火) 22:39:51.64ID:???Windowsのファイル名に使えない文字。
\/:*?"<>|
Windowsのパスに使えない文字。
*?"<>|
Windowsのパスに使える記号。
\/:!#$%&'()+,-.;=@[]^_`{}~
WindowsのAscii文字のパスにヒットする正規表現。
[0-9A-Za-z\\\/:!#\$%&'\(\)\+,\-\.;=@\[\]\^_`\{\}~]+
0366nobodyさん
2011/12/13(火) 22:47:12.14ID:???ユニコード表記でかけよ
0367nobodyさん
2011/12/13(火) 22:51:27.80ID:???0368345
2011/12/13(火) 23:20:32.52ID:XO4P9E+z本当ですね、\nがあると、ソースが改行してますw
じゃ、ソースを改行するため、クライアントさまにソースを見ていただくために、\nを入れるんですか?
0370nobodyさん
2011/12/14(水) 00:12:48.87ID:hH9P1H+wクライアントだけじゃなく自分がHTMLをチェックするときも改行があったほうが見やすいだろ?
逆に敢えて改行を入れない場合もあるから好きにすればいい
0371345
2011/12/14(水) 00:33:43.94ID:QUjeWNXAなるほど、どうもです。
あと、↓の、echo $name ."<br>\n";を表示するときに、実験的に一時的に文字に赤色を付けたいのですが、
どうするの一番お手軽でしょうか?
<?php
$i = 0;
$title = "kyonun";
while( $i <= 10 ){
$count = $i;
$number = str_pad($count, 4, "0", STR_PAD_LEFT);
$name = $number . $title.".html";
echo $name ."<br>\n";
$i++;
}
?>
0372345
2011/12/14(水) 00:36:45.53ID:QUjeWNXA0373nobodyさん
2011/12/14(水) 00:53:58.00ID:???0374345
2011/12/14(水) 01:21:09.79ID:QUjeWNXAすみません、↓でやってみたけど黒いまんまです。
<?php
$i = 0; //ファイルの連番用
$title = "kyonun";
while( $i <= 10 ){
$count = $i;
$number = str_pad($count, 4, "0", STR_PAD_LEFT);
$name = $number . $title.".html";
// echo $name ."<br>\n";
$i++;
echo '<p style="red">'. $name. '</p>', PHP_EOL;
}
?>
0375nobodyさん
2011/12/14(水) 02:35:17.37ID:???print_r( explode( "\\" , "すう\\あすあxソ\\ソ\\ソソxx") );
print_r( mb_explode( "\\" , "すう\\あすあxソ\\ソ\\ソソxx") );
return;
function mb_explode( $delimiter , $string , $encode=NULL ) {
if(!is_array($delimiter)) $delimiter = array($delimiter);
if($encode===NULL) $encode = mb_detect_encoding( $string , "ASCII, UTF-8, SJIS-win, eucJP-win, JIS, UTF-16LE, UTF-16BE", TRUE);
$array = array( mb_convert_encoding( $string , "UTF-16LE", $encode ) );
foreach( $delimiter as $delim ) {
$delim = mb_convert_encoding( $delim , "UTF-16LE", $encode );
for( $n=0; $n<count($array); $n++ ) {
$subarr = explode( $delim , $array[$n] );
if(count($subarr)===1) continue;
array_splice($array, $n, 1, $subarr );
$n+=count($subarr)-1; }}
foreach( $array as &$val ) $val = mb_convert_encoding( $val , $encode, "UTF-16LE");
return $array; }
0376nobodyさん
2011/12/14(水) 02:38:30.19ID:???0377nobodyさん
2011/12/14(水) 04:29:37.65ID:hH9P1H+w<p style="red"> じゃなくて <p style="color:red"> だな。
>>373も間違ってるが、あんたもPHPだけじゃなくCSSも勉強したほうがいい。
0378345
2011/12/14(水) 05:13:46.41ID:QUjeWNXAおお、ありがとうございます。うまく行きました。
しかし、これって改行が2つも入るんですよね。1つにならないでしょうか?
あと、あと、最後のPHP_EOLって何でしょうか? デリっても表示は変わりません。
echo '<p style="color:red">'. $name. '</p>', PHP_EOL;
0379nobodyさん
2011/12/14(水) 05:40:31.71ID:???だが改行コードはOSによって違うので、
OSによって適切な改行コードにしてくれる。
ぶっちゃけ\nでいい
0381345
2011/12/14(水) 05:57:46.02ID:QUjeWNXAどうもです。
つーか、エディターはWZ6を使ってるんですけど、
文字コードをシフトJISからutf-8に変えて無意識で保存して、10分ぐらい苦労したコードを飛ばしちゃいましたw
文字コードは何がなんだかさっぱりわからんのですがどうしたらいいんですかね?
htmlファイルを自動で生成するphpを作ってうまく動いたんだけど、
ファイル名の日本語部分がめちゃくちゃ文字化けするから、
文字コードをシフトJISからutf-8に変えてみたんですよねw
そしたらソースがメチャクチャになっちゃったw
文字コードにはどういう心がけで接したらいいのかまったくわからないです〜
0382345
2011/12/14(水) 06:10:58.72ID:QUjeWNXAそれを、htmlファイルの名前にしてhtmlファイルを出力すると名前が文字化けするんですよね。
0383345
2011/12/14(水) 06:29:46.30ID:QUjeWNXA0384345
2011/12/14(水) 06:32:49.69ID:QUjeWNXA0385nobodyさん
2011/12/14(水) 07:09:32.44ID:???ちょっとは自分で調べて頑張れよ
0386nobodyさん
2011/12/14(水) 08:35:53.33ID:hH9P1H+wutf-8で保存したならutf-8で開けば問題ないはず。
ファイル名を管理するのはOSのファイルシステムなのでファイル内の文字コードとは関係ない。
OSやウェブサーバー等の環境によっては日本語ファイル名はトラブルの原因になるので
詳しいことがわからないなら日本語ファイル名は避けるのが基本。
WZの使い方は自分で調べること。
0387nobodyさん
2011/12/14(水) 10:47:14.85ID:???0388nobodyさん
2011/12/14(水) 12:26:31.39ID:???0389nobodyさん
2011/12/14(水) 17:00:13.28ID:36qjf2FUif ($result = $mysqli->query("SELECT * FROM tbUser WHERE seq = ".$_SESSION['seq'])) {
if ($result->num_rows > 0) {
$row = $result->fetch_array(MYSQLI_ASSOC);
$result->close();
$decoded = json_decode($row['profile']);
$smarty->assign('gender', $decoded->gender);
$smarty->assign('locale', $decoded->locale);
$smarty->assign('img', $decoded->img);
$smarty->assign('bio', $decoded->bio);
こんな感じの書き方で(途中ですが)apachiのエラーログに下のようなエラーが出ます
Undefined property: stdClass::$gender
どのように修正したら良いのでしょうか?
よろしくお願いします。
0390nobodyさん
2011/12/14(水) 17:04:24.51ID:???0392nobodyさん
2011/12/14(水) 17:48:19.02ID:???if(property_exists('decoded','gender')){
$smarty->assign('gender', $decoded->gender);
}
issetと同じように上のようにしたらその部分を読まなくなってしましました。
property_existsの引数の書き方が悪いのでしょうか?
0393nobodyさん
2011/12/14(水) 17:51:53.33ID:???>>1
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
0394389
2011/12/14(水) 18:10:43.40ID:36qjf2FU392は自分です。よろしくお願いします。
0395345
2011/12/14(水) 18:55:32.05ID:QUjeWNXA<?php
$name = "2ちゃんねらー.html"; // ファイル名を作る
echo '<p style="color:green">'. $name. '</p>', PHP_EOL; // ファイル名表示
$fp = fopen($name,"a"); // ファイルを作る。
fclose ($fp); // ソケットを閉じる
?>
を実行すると、
鐚???<????????????.html、が表示され、
・偵■繧・s縺ュ繧峨・.html、というファイルが生成されます。
日本語でも文字化けさせないソースを作るにはどうしたらいいのでしょうか?
よろしくお願いします。
環境は、winXP、IE8.06001、PHP Version 5.3.8です。
0396345
2011/12/14(水) 18:59:13.15ID:QUjeWNXAMySQL
サーバのバージョン: 5.5.16
Web サーバ
Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1
phpMyAdmin
バージョン情報: 3.4.5
です。
0397345
2011/12/14(水) 19:05:18.41ID:QUjeWNXAありがとうございます。
あと、
info.phpに
mbstring
Multibyte Support enabled
Multibyte string engine libmbfl
HTTP input encoding translation disabled
とあるのですが、これと文字化けは関係ありますか?
0398nobodyさん
2011/12/14(水) 19:08:52.76ID:???mb_convert_encoding
0399nobodyさん
2011/12/14(水) 19:29:07.35ID:???使わない方がいいんだが。
0400345
2011/12/14(水) 19:59:10.69ID:QUjeWNXAレスありがとうございます。
つか、どうもIE8のソースの文字コードはECUです。
で、ECUの文字列をコピペして、UTF-8のファイルに貼り付けると、どうなっちゃうんですかね?w
0401345
2011/12/14(水) 20:02:35.46ID:QUjeWNXA表示も、ファイルも日本語で作れました。
0402nobodyさん
2011/12/14(水) 20:36:40.65ID:17jEiayv管理単位はなんですか?IPですか?
0403nobodyさん
2011/12/14(水) 20:42:42.09ID:???0405345
2011/12/14(水) 21:01:41.08ID:QUjeWNXA置くと、色々かわりますねw
表示は文字化けですが、ファイルの方は日本語表示出来ました、ありがとうございました。
0406nobodyさん
2011/12/14(水) 21:09:33.23ID:???0407345
2011/12/14(水) 21:30:24.42ID:QUjeWNXA$url="http://kohada.2ch.net/test/read.cgi/php/1322564127/";
file_get_contents($url);
みたいな方法で、順番に、ネットのページをダウンロードしています。
ところが、このやり方だとすぐタイムアウトするのか、
10ページぐらいでfile_get_contents()がエラーを吐きます。
この用途に使える、file_get_contents()より緻密な設定が出来る関数はないでしょうか?
0408nobodyさん
2011/12/14(水) 21:42:57.79ID:???0409345
2011/12/14(水) 21:47:23.87ID:QUjeWNXAFatal error: Maximum execution time of 30 seconds exceeded in
すみません、phpのループの設定だった。
0410345
2011/12/14(水) 21:48:32.82ID:QUjeWNXAこれみたい。
0411nobodyさん
2011/12/14(水) 22:06:44.80ID:Ur9qSeounumber_of_comments だとちょっと長いかな
0412nobodyさん
2011/12/14(水) 23:47:05.88ID:???$comment_count かなあ
$comments でもいい気がしたけど、これだとコメントが詰まった配列みたいだし
よく使う変数なら短くしたい $come_count とかさ
意識はしてないけど、「$変数の対象_変数の用途や型」って書き方してる
まあ、数えるものが限定されているなら $count でもいいかな
0413nobodyさん
2011/12/15(木) 00:50:50.57ID:???http://toro.2ch.net/test/read.cgi/tech/1311942721/
0415345
2011/12/15(木) 02:24:51.02ID:nOE9twusどうもです。 あれはphpのループの設定で解決しました。
つか、文字列から↓の記号を排除する関数、ってどこかにないでしょうか?
↓の記号が出てきたら、空白に置き換えるでも、削除するだけでも、どんなんでもかまいません。
Windowsのファイル名に使えない文字。
\/:*?"<>|
0416nobodyさん
2011/12/15(木) 02:37:01.83ID:???0417345
2011/12/15(木) 02:51:10.82ID:nOE9twusおー、どうもありがとうございます。
0418345
2011/12/15(木) 06:29:31.80ID:nOE9twusってことは、PHPで検索エンジンを作ろうとした場合、DOMを使うといい、ってことなのでしょうか?
0419345
2011/12/15(木) 06:33:42.81ID:nOE9twusと書くと、
Deprecated: Function ereg_replace() is deprecated in C:\xampp\htdocs〜〜
が出るのですが、正しくはどうすべきでしょうか?
0420345
2011/12/15(木) 07:13:00.67ID:nOE9twus動かないと絶望のどん底に落ち込むから、トータルでは健康に悪いんじゃないですかね?w
0421345
2011/12/15(木) 07:16:20.70ID:nOE9twushtml、css、php、ジャバスクリプトをマスターしなければならないんだけど、
こんなの1人だけでやってる人いるんですかね?
0422nobodyさん
2011/12/15(木) 07:37:15.25ID:???0423nobodyさん
2011/12/15(木) 07:39:28.13ID:???君だけのスレじゃないから
0424nobodyさん
2011/12/15(木) 08:28:16.45ID:???PHPプログラマ〜のお姉さんだよぉ〜
今日はどんな質問が残ってるのかな?
0425nobodyさん
2011/12/15(木) 12:46:01.86ID:Ddg6IIc70427nobodyさん
2011/12/15(木) 16:19:29.00ID:uDMRC9viさらにいうなら
html
css
php
Java script
action script
sql
perl
apache
smarty
覚えることが多すぎるのがWEB
0428nobodyさん
2011/12/15(木) 16:33:58.87ID:???0429nobodyさん
2011/12/15(木) 16:40:26.23ID:BuhzkLXW0430nobodyさん
2011/12/15(木) 16:55:14.47ID:IwZ5fbUN<?php
echo "<input type='submit' name='del[9294]' value='削除'>";
echo "</form>";
echo "<br>";
if($_POST){
echo "<pre>";
print_r($_POST);
echo "</pre>";
echo "<br>";
echo $_POST['del[9294]'];
}
?>
出力結果
Array
(
[del] => Array
(
[9294] => 削除
)
)
Notice: Undefined index: del[9294]
$_POST['del[9294]']で取り出すのかと思ってたら多次元配列になるとか聞いてないよー
0431nobodyさん
2011/12/15(木) 17:01:15.77ID:???0432nobodyさん
2011/12/15(木) 17:05:38.43ID:???○チェックボックス
0433nobodyさん
2011/12/15(木) 17:14:02.71ID:???用途次第で、buttonもcheckboxもradioもhiddenもありうるだろう。
取得値が多次元配列になるのは同じ。
0434nobodyさん
2011/12/15(木) 18:10:55.11ID:???0435nobodyさん
2011/12/15(木) 18:18:27.02ID:8PBzw4Kx0436nobodyさん
2011/12/15(木) 18:39:23.54ID:???print json_decode("\"$str\"");
utf8以外ならその後変換して
0437nobodyさん
2011/12/15(木) 19:56:58.41ID:3eA/ytGy今、webアプリで3つのSNSのapiに文章をポストする仕組みを作ってるんですが
フォームの送信ボタンを押した後、apiへのアクセスと投稿部分は時間がかかるため
exec()でバックグラウンド処理させました。が、それでも時間がかかりすぎる気がします
時間の捕捉方法は以下の通りです
$session->starttime = date("Y-m-d H:m:s");
funcImageUpload(~~~);//写真アップロード
funcQuery(~~~);//DBクエリ
exec(~~~);//apiへの投稿
$session->endtime = date("Y-m-d H:m:s");
この状況で処理時間が
○テキストのみ投稿
・exec();をコメントアウト:1秒
・exec();を実行:3秒
○テキストと写真を投稿
・exec();をコメントアウト:3秒
・exec();を実行:9秒
いくら3つもapiにアクセスしてるからって3秒とか9秒は時間かかり過ぎじゃないでしょうか?
バックグラウンド処理=一瞬で済むものだと思ってたのですが違うんでしょうか
exec();自体初めて利用した処理なのでおかしい点があるとしてもわかりません
初心者にありがちな穴などあるんでしょうか?
または、高速化する方法を教えてもらえると嬉しいです
すみませんがアドバイスお願いします
0438nobodyさん
2011/12/15(木) 20:07:17.22ID:???標準出力を nullかなんかにリダイレクトして & つけてる?
windows だったら execじゃダメ
0439nobodyさん
2011/12/15(木) 20:09:19.52ID:TSU9Et/j以下のように宣言した変数をさらにクラスメンバの宣言(?)で使いたいのですが、
'bar' => $piyo の部分がエラーになります。
class Hoge {
public $piyo = 'piyo';
public $foo = array(
'bar' => $piyo
// 'bar' => $this->piyo これもダメです。
}
}
上記のように値を使い回したい場合どうすればいいでしょうか?
0442nobodyさん
2011/12/15(木) 21:12:38.85ID:3eA/ytGyありがとうございます
exec("/usr/bin/php {$execFile} {$params_exec} {$twitter_userToken} {$twitter_userTokenSecret} >/dev/null 2>&1");
{$execFile} 実行ファイル
{$twitter_userToken} パラメータ1
{$twitter_userTokenSecret} パラメータ2
という感じです
間違ってるんでしょうか?
>>441
すみません、恥ずかしいんですがノンブロックとはなんでしょう?
apiへの処理の成功の可否は、エラーコードをDBに登録するようにしてあります
0443nobodyさん
2011/12/15(木) 21:14:07.20ID:8PBzw4Kx↑このプロパティを { } で囲むのはどんな意味があるんですか?この記法に名前はありますか?
0444nobodyさん
2011/12/15(木) 21:14:34.92ID:8PBzw4Kxありがとうございます!
0445nobodyさん
2011/12/15(木) 21:30:57.86ID:???>>438のいうとおり、&がついてないからだね。
ノンブロック(ノンブロッキング)ってのは、
何かの処理を行ったとき、その処理によってメインの処理がブロックされる/されない の意味で使われるよ。
同期/非同期みたいな。
0446nobodyさん
2011/12/15(木) 21:44:25.15ID:???>/dev/null 2>&1"); を > /dev/null &"); に変更したら上手くいきました!
ノンブロックって言葉も勉強になりました、ありがとうございました
0447nobodyさん
2011/12/15(木) 22:03:39.25ID:QbiaPFTgmember/register?codeのregisterってなんですか?
フォルダではないようなのですが
0449nobodyさん
2011/12/15(木) 22:18:40.03ID:???ファイルだろうな
それ以外の可能性もあるけど、PHP と関係ないな
>>448
俺も思ったけど、話が PHP から逸れるからさ
>>446 は、標準エラー捨てるなら >/dev/null 2>&1 & と書きな
0450447
2011/12/15(木) 22:25:59.73ID:QbiaPFTgすみません。apacheのrewriteruleの設定によるものでした。
おっしゃるとおりPHPに関係ないです
0451446
2011/12/15(木) 23:22:53.45ID:???標準エラーってのは実行したスクリプトがエラー起こした時のエラーの返り値ですよね?
いらないから >/dev/null 2>&1 & が正しいわけですね
ちょっとまだよくわかってないことが多いみたいです、も少し勉強してみます。ありがとうございました
0452nobodyさん
2011/12/16(金) 00:10:18.82ID:6sQrAgQt5
1
<?php
$file = fopen("./settei.txt","r");
if ($file)
{
while (!feof($file))
{ $strBuf = fgets($file,1024);
$i++;
if ($i == 1){ $a = $strBuf / 100; }
else
{ $b = $strBuf; }
}
fclose($file);
}
else
{ die("open-err"); }
echo $a."<br>".$b;
?>
出力結果0.05
$bが表示されません。なぜでしょうか。教えてください
■ このスレッドは過去ログ倉庫に格納されています