【PHP】下らねぇ質問はここに書き込みやがれpart16
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/02/05(日) 22:35:34ID:sf8bx52Dここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
本スレ【PHP】質問スレッドpart32【php】
http://pc8.2ch.net/test/read.cgi/php/1136276300/
前スレ【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
過去スレは>>2
0402nobodyさん
2006/02/14(火) 22:43:05ID:???0404nobodyさん
2006/02/14(火) 22:59:12ID:???使用する文字コードを特定すればできるよ。
mbstringみたいに設定でどれでも自動切換えみたいのはさすがにしんどい。
0405nobodyさん
2006/02/14(火) 23:04:33ID:???%x8Cとか
0406nobodyさん
2006/02/14(火) 23:18:59ID:???0407nobodyさん
2006/02/14(火) 23:20:50ID:???/hoge/fuga/hunnu/2test
のような文章から
/hoge/fuga/hunnu(最後の/〜を抜いたもの)
hunnu(最後の/〜の直前の文字列)
2test(最後の/以降の文字列)
を一度に正規表現で抜き出したいのですが、どのようなコーディングをすればいいでしょうか?
"^(/?([a-zA-Z%])*)*([a-zA-Z%]*)"
として挫折しました。
直前に書いた"/^((\/[a-zA-Z]*))*$/"のが抽出率はいいようですが。
よろしくお願いします。
0409nobodyさん
2006/02/14(火) 23:27:00ID:???・/2testを抜いたもの
・/2testの直前にある文字列
・2testのみ
を抽出したいという事です。
とても分かりづらく書いてすみません。
0410nobodyさん
2006/02/14(火) 23:37:42ID:???$str = "/hoge/fuga/hunnu/2test";
preg_match('<.*/([^/]+)/([^/]+)$>', $str, $match);
$str1 = $match[2];
$str2 = $match[1];
0411410
2006/02/14(火) 23:40:32ID:???preg_match('<^(.*/([^/]+))/([^/]+)$>', $str, $match);
$str1 = $match[1];
$str2 = $match[2];
$str3 = $match[3];
0412nobodyさん
2006/02/14(火) 23:49:28ID:???ありがとうございます。
dirnameだとファイル名を含まないパスを返してくるので意図した内容にはならず、
ただこちらの存在を忘れていました。
>>411
神を見た。
いや、何度読んでも仕組みが分からない。
でも期待したものが返って来ます。
凄いです。なぞです。
いわゆるゴッドです。
0413nobodyさん
2006/02/14(火) 23:55:57ID:???/2testのみだと返って来ないみたいです。
0414nobodyさん
2006/02/15(水) 00:01:49ID:???で/2testのようなものも回収できるようになりました。
<や>が全然分かりませんが、動くので>4100氏に感動してしまいます。
0415nobodyさん
2006/02/15(水) 00:17:35ID:???/hoge/fuga/hunnu/
だと取得できなかったのですが、
'<^(.*/?([^/]+))*/([^/]+)?$>'
とする事で取得する事ができました。
>410氏ありがとうございました。
0416nobodyさん
2006/02/15(水) 01:16:25ID:???あー。<や>には大して意味ないよ。
普通、pregの正規表現は /〜/ って書くものだけど、
|〜| とか [〜] とかでも書けるってだけの話。
パス分解の正規表現を書くときは中身に / を多用するから
エスケープ面倒くさいんで別の記号で代用してるだけ。
0417nobodyさん
2006/02/15(水) 02:51:07ID:NFe11LPg0423nobodyさん
2006/02/15(水) 09:37:50ID:???0424nobodyさん
2006/02/15(水) 09:56:08ID:???その場合matchesに入るテキストはどういう順番になるの?
0425nobodyさん
2006/02/15(水) 10:01:21ID:???0426nobodyさん
2006/02/15(水) 10:24:46ID:???0429nobodyさん
2006/02/15(水) 12:06:02ID:???Date:
Two, 14 Feb 2006 8:38:50 -0480
という素晴らしいヘッダを送ってくるスパムがあるんですが、postgresにdateとして登録すると日付ではないと怒られます。
phpでも同じような正しい日付ではないと判断する関数は無いでしょうか?
0431nobodyさん
2006/02/15(水) 13:06:54ID:???ファイルの更新日時を取得するにはどうしたらよいのでしょうか
0432nobodyさん
2006/02/15(水) 13:09:36ID:???ありがとうございます、出来ました
下記のようにおかしな日付表現だと"-1"が帰ってきました。
----------------------------------------
$time = 'Two, 14 Feb 2006 8:38:50 -0480';
//$time = 'Wed, 15 Feb 2006 11:49:43 +0900';
$stime = strtotime($time);
print $stime . "<br>";
print date("(Y-m-d h:i:s)",$stime);
----------------------------------------
関数名が分かってマニュアル見てみるとそのまんまエラーの処理があって便利
http://php.s3.to/man/function.strtotime.html
0433nobodyさん
2006/02/15(水) 13:20:22ID:???stat
filemtime
別に宣伝じゃないけど
PHP5逆引き大全 500の極意
とかの逆引き出来る本買うと相当便利よ
phpのマニュアルは日本語検索する方法が分からないのよね・・
0434nobodyさん
2006/02/15(水) 14:04:41ID:p2BDIAFN0437nobodyさん
2006/02/15(水) 14:47:56ID:???0439431
2006/02/15(水) 15:08:53ID:???やってみたのですが、どうもうまくいきません。アップロードした時刻が表示されてしまいます。
ポイントだけでもかまわないので、何かサンプルを示していただけないでしょうか?
0441nobodyさん
2006/02/15(水) 15:35:03ID:???0443nobodyさん
2006/02/15(水) 15:41:12ID:???ありがとうございます、気をつけます
現在はphp4なので、またphp5に移ってDB登録の際にエラーが出たら考えます。
>>431
アップロードしてからの更新時刻についてだったら
clearstatcache();
print_r(stat('./dummy.txt'));
で出来てるようだけど
0445nobodyさん
2006/02/15(水) 18:22:47ID:NFe11LPgそうです。そのPDFとして吐き出すという処理を自動でさせたいのです。
ID・PASSなどでログインした会員ページで、例えば自分の登録状況をPDFとして出すとか。
0447nobodyさん
2006/02/15(水) 20:43:29ID:???上に出てきてないやつだと fpdfとかもあるな。
0448nobodyさん
2006/02/15(水) 21:12:05ID:HBKFx6cqsqliteは入っているのでしょうか?どこにもないんです。
phpinfoもみましたがそれらしき文字も見当たりません。
なにかインストールする作業が必要なんでしょうか?
どなたかご教授おねがいします。
0449nobodyさん
2006/02/15(水) 21:36:07ID:???sqlite_open()すればインストールされているかどうか分かる
0450nobodyさん
2006/02/15(水) 22:19:37ID:???Win版しか知らないが、最新版なら作業が必要。
5.1から標準ではなくなった。ライブラリ化されたっぽい。
php.iniの適切な位置に
extension=php_pdo.dll
extension=php_pdo_sqlite.dll
extension=php_sqlite.dll
の3行を順番に記述するがよろし。
Linux版とかでも何らかの作業が必要と思われ。
0451nobodyさん
2006/02/15(水) 23:48:30ID:yhYCj6u70452450
2006/02/16(木) 00:08:24ID:???Win版で非標準(デフォで組み込まれていない)になって、Linux版で標準のままだったら不公平かとw
Win版に関しては間違いなく5.1.0ではデフォでは組み込まれなくなった。
5.0.4→5.1.0Ver.UP時にphp.iniを流用してたらSQLite動かず、原因究明にえらい苦労した。
0453nobodyさん
NGNGクローズに失敗した場合
どう対処したらいいですか?
というかどういう状況になると
失敗するんですか?
0454nobodyさん
2006/02/16(木) 01:07:23ID:???0455nobodyさん
2006/02/16(木) 01:10:32ID:???0458nobodyさん
NGNGじゃあスクリプトからしかアクセスしないような
ログファイルとかだったら
失敗してもそのまま終了してしまって問題ないですよね。
0459nobodyさん
2006/02/16(木) 01:53:31ID:???質問じゃないのか。
0460nobodyさん
2006/02/16(木) 01:57:27ID:???いいんじゃない?
貧弱なOSじゃなかったらスクリプト(PHPプログラム)が終了すると同時にファイルもクローズしてくれるだろうし。
0461nobodyさん
2006/02/16(木) 02:06:41ID:???もうPerl忘れちゃったよ('A`)
いや、そんなにPHPとは変わんないけどさ、気分の問題だよ
0462nobodyさん
2006/02/16(木) 02:26:03ID:U/SzwaHVデータベースがはじめてなのに土曜日までに会員登録をつくらなあかんのです。
助かりました。ありがとうございます。
0465nobodyさん
2006/02/16(木) 04:19:25ID:???xreaを使ってるんですが、
拡張子をphpにしてるにも関わらずhtmlとして扱われてしまいます。
もともとはMovable Typeのtmplという拡張子のファイルを、
PHPでカスタマイズしたものなのですが、
Movable Type側で、このファイルをhtmlとして扱うような
処理がしてあると考えるのが妥当でしょうか?
Perlはわからないのでサッパリです・・・
当然、ファイルは拡張子をかえたので、
そのファイルを使っているものに関しては、
拡張子の関連付けを変えました。
0467nobodyさん
2006/02/16(木) 05:10:39ID:???↑の「&」ってどういう意味をなすんでしょうか?
くだらないかもですが、宜しくお願いします。
0468nobodyさん
2006/02/16(木) 05:56:15ID:???& $variable;みたいに&と$の間にスペース入れられるのかな。
ちなみにそれは参照渡しと呼んぶ。
$src = 100;
echo "$src\n";
hoge ($src);
echo "$src\n";
function hoge (&$src){$src=0}
----出力----
100
0
----終了----
となる。
詳しくは関数の引数を読んでくれ
ttp://www.php.net/manual/ja/functions.arguments.php
0469nobodyさん
2006/02/16(木) 07:50:00ID:???PHPでzip圧縮なんて出来るんですか?
0473470
2006/02/16(木) 09:53:03ID:???PHP自体ではZIP読み込み関数しか用意されてないが、
phpMyAdminの話でいうとPHPからzlibを利用できる環境で
zipとgzipの出力ができる。詳しくはzip.lib.php参照
(PEARのArchive_Zipクラスみたいなもん)
0474nobodyさん
2006/02/16(木) 13:18:39ID:???$rにNULLを入れると、NULLと表示されてしまいます。
これって正しいですか?
0476474
2006/02/16(木) 15:05:23ID:???formタグのvalue='NULL'で渡しているんですが、もしかしてこれって文字列になるんですか?
''としてもifの中を通ってしまいます。
ちなみに明らかに使っていないグローバル変数でif(isset())をしたら中を通ってしまったので、
ためしにNULLを渡してみたらやっぱりifの中を通ってしまいます。
さらにちなみにif(isset())は多用していて、機能する所と機能しない所があります。
なにが違うのかさっぱり分かりません。
どうかご教授下さい。
0477nobodyさん
2006/02/16(木) 15:12:53ID:???APACHEを勉強しようと思い、マイPC(windows)にAPACHEをインストールし、
PHPを動作させました。
ところが、日本語の$_GET値が、勝手にURLデコードされてしまいます。
例えば、次のようなPHPファイルがあり、
test.php
<?php
print $_GET[key];
?>
以下のようにアクセスすると、
test.php?key=%A4%A2%A4%A2%A4%A2
実行結果
-----------------
あああ
-----------------
と表示されます。
正しくは、
-----------------
%A4%A2%A4%A2%A4%A2
-----------------
かと思うのですが、何が原因でしょうか。
お時間がある方教えていただけると助かりますm(__)m
0478nobodyさん
2006/02/16(木) 15:13:32ID:???0479nobodyさん
2006/02/16(木) 15:19:16ID:???>>476
$a = "NULL";
$b = "NULL";
$C = NULL;
echo "a = $a, b = $b, c = $c";
を実行してみて感想が欲しい。
ちなみにマニュアルでは、
引用符、二重引用符
ttp://www.php.net/manual/ja/language.types.string.php
NULL
ttp://www.php.net/manual/ja/language.types.null.php
に書いてあるから。
それでも分からなかったらまた質問しれい。
0480nobodyさん
2006/02/16(木) 15:22:43ID:???http://www.studyinghttp.net/uri
ここのパーセントエンコーディングを読んでみて
0481nobodyさん
2006/02/16(木) 15:25:17ID:???つかhtmlのformで渡せるのは"文字列"だけだよ。
文字列を受け取って、それをどう解釈するかは受信側に任されてるが。
0482474
2006/02/16(木) 16:01:57ID:???実行結果です。
引用符、二重引用符については一様分かっているつもりなのですが、
postで渡したNULLがどうしてもif(isset())を通ってしまいます。
value=NULL
value="NULL"
value='NULL'
$_POST[r]
$_POST['r']
$_POST["r"]
いずれもif(isset())を通ってしまいました。
仕方ないのでNULLの代わりに0を渡して、
if($_POST[r] != 0)としました。
if(isset())は他でも使っているので気持ちが悪いッス。
0484nobodyさん
2006/02/16(木) 16:08:11ID:???フォームでNULLを渡してissetで判定、ってのは基本的には無理。
やるなら
if($r == 'NULL') unset($r);
とかやって変数を消すしかない。
> 明らかに使っていないグローバル変数
これでisset()を通るのは意味不明。どっかで $r = ''; とかしてるんじゃないの?
isset()で偽になるのは unset($r); で変数自体を消す場合と $r = NULL; とプログラム中で書いたとき。
0486nobodyさん
2006/02/16(木) 16:11:33ID:???通常、フォームに対するissetは「そのフォーム自体が存在しない場合」をチェックするのに使う。
なので、<input type="hidden" name="a" value="">とやった時点でもうissetは必ず真。
普通は<input type="submit" name="a" value="aを押したときの処理">みたいにsubmitで使って
どのボタンが押されたかの判別に使う程度。値の内容判別にissetを使うのは間違い。
0487474
2006/02/16(木) 16:14:33ID:???ぬあ、そうなんですか、ってそうなんですね。
ありがとうございます。
ところで、formタグに囲まれている input type='file' は、
参照されなくても$_FILESに値が入ってしまうんでしょうか?
参照されていないのにif(isset($_FILES))でifの中を通ってしまいます。
0488nobodyさん
2006/02/16(木) 16:18:28ID:???基本的な「型」の区別すら付けられていない気が・・・・
(481を読む前に482を投稿したとしても)
0490474
2006/02/16(木) 16:34:56ID:???昨日は動いてた気がしたんですよ、夢でも見てたんですね。
勉強し直して来ます。
0491nobodyさん
2006/02/16(木) 16:36:06ID:???ttp://www.gac.jp/article/index.php?stats=question&category=&id=17033&command=msg&page=all
こっちでも優しくしてやってくれよ…マイッタ
0492nobodyさん
2006/02/16(木) 16:46:47ID:???例えばある表のパラメータとかを入れるレコードを作るとして
2回目から入れる場合
主キー=aとか調べてあればupdateなければinsertっていうのより
一旦レコード全部削除してinsertばっかってやってるのですが
何かまずいことありますか?
調べる処理分時間も短縮されるのでと思っているのですが・・・
0494nobodyさん
2006/02/16(木) 16:51:55ID:???全然ちょっとじゃないよっヽ(`Д´)ノ
0497nobodyさん
2006/02/16(木) 17:01:14ID:???基本的にどの言語にもある変数や配列といった概念は昔からあるのですか?
0498nobodyさん
2006/02/16(木) 17:09:10ID:???0499477
2006/02/16(木) 17:10:43ID:???ありがとうございました。
PHPって勝手にデコードされるのが仕様だったんでしたね。
perlと行ったり来たりの開発でテンパッてました。
■ このスレッドは過去ログ倉庫に格納されています