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

【PHP】くだらねぇ質問はここに書き込みやがれpart4

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん05/03/13 16:08:32ID:???
PHPに関するくだらない質問用すれです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい

・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
0002nobodyさん05/03/13 16:13:46ID:???
おつ
0003nobodyさん05/03/13 16:28:43ID:D632M8O2
日本語の文字列をPHPでURLエンコード・デコードするのって
urlencode/urldecode関数を使うだけじゃなくてもう一工夫必要ですかね?
文字化けしちゃうんですが。
環境はRedhatLinux、PHP4.3.10です。
0004nobodyさん05/03/13 16:55:32ID:???
>>3
マルチバイト周りの設定の不備のような気もしますが、
bin2hex()を使って比較してみれば正確に渡っているかどうか確認できますよ
0005nobodyさん05/03/13 17:02:09ID:???
Pukiwiki の スレ が キチガイ に占領されてるんですが、どうしたらいいですかね?
0006nobodyさん05/03/13 17:07:45ID:???
>>5
おまえもキチガイになる
0007nobodyさん05/03/13 19:00:36ID:???
>>6
ありがとうございました。長年の悩みが解けました。
0008nobodyさん05/03/13 21:01:59ID:???
>>4
php.iniのmbstring.http_inputとかですかね?
ちょっとやってみます。
ちなみにFORMタグのデータは日本語でもちゃんと受け取れるのですが、
phpでURLエンコードしたデータは文字化けしてしまいます。
0009nobodyさん05/03/13 22:51:58ID:nnVcNb6z
$a=半角の英字だけの文字列
"abc" "def" "ghi"を含まなければtrueとしたいのですが、

if(!ereg("abc"$a)||!ereg("def",$a)||!ereg("ghi",$a)){
echo true;
}

↑このように書いたところすべてtrueになってしまいました。
なぜですか?一個ずつ三回ifを書けば期待どうりの結果になります


0010905/03/13 23:05:50ID:???
原因わかりました。
思いっきり勘違いしてました
0011nobodyさん05/03/13 23:08:30ID:???
>>9
$a="abc"をそいつに放り込んでみると、
ereg("abc",$a) -> true , ereg("def",$a) -> false , ereg("ghi",$a) -> false
したがって、if(false || true || true) -> if(true) になる。
$a="xyz"を入れると同様にして
if(true||true||true) -> if(true) になる。
何も不思議はあるまい。
0012nobodyさん05/03/13 23:19:16ID:???
というか、正規表現の使ってるいみないから。
0013nobodyさん05/03/13 23:20:25ID:???
>>11
わかりやすい説明ありがとうございます。
|| ←これは左右のどちらかがtrueならtrueですよね?
だから || をいくつ並べても一つでもtrueがあればtrueですよね?
0014nobodyさん05/03/13 23:29:31ID:???
>>13
論理演算でググれば絵付きで説明が見つかりますよ。

"abc" "def" "ghi"を含まない
= abcを含まない かつ defを含まない かつ ghiを含まない
= (! abcを含む) && (! defを含む) && (! ghiを含む)
= !(abcを含む || defを含む || ghiを含む) [ド・モルガン]
= !( ereg("(abc|def|ghi)",$a)) [正規表現のクラス化]
= !(abcを含む または defを含む または ghiを含む)
0015nobodyさん05/03/13 23:31:43ID:???
教えてください、
PHP+MySQLで、MySQLに書き込む際にSJISの文字化けを起こしてしまいます。
クエリは"INSERT INTO table(name) VALUES('$name')" 、$name=mysql_escape_string($_REQUEST['name']); です。
$_REQUEST['name']='表示'とすると侮オになってしまいます。
文字コードはSJIS、magic_quotes_gpcはoffで変更は出来ません。
addslashes()を加えても駄目でした。どうすれば良いのですか?
0016nobodyさん05/03/13 23:34:23ID:???
自ファイルの最終更新日を得るのに

<? print date('Y.m.d H:i', filemtime("このファイル.php")); ?>

と使ってるのですが、わざわざファイル名を指定せず、自ファイルの最終更新日を得る
スマートな関数って、ないんでしょうか?
SSI で云うところの、<!--#echo var="LAST_MODIFIED"--> みたいな奴。
0017nobodyさん05/03/13 23:45:47ID:???
>>16
$_SERVER['PHP_SELF'] じゃ駄目なの?
0018nobodyさん05/03/13 23:46:31ID:???
>>15
mb_language("ja");
mb_internal_encoding("SJIS");
mb_http_output("SJIS");
mb_http_input("auto");
0019nobodyさん05/03/13 23:50:12ID:???
>>9
そいう場合はココを書き直したら、うまくいきました!

とか書くと同じ悩みの人にもよろし。(今回はいないでしょうけど

皆様もよろしく。
0020nobodyさん05/03/14 00:02:48ID:???
>>16
<?php
print date("Y年n月j日 H時i分", filemtime($SCRIPT_FILENAME)) ;
?>
--------------------------------------------------------------

<?php echo "最終更新時刻:".date("F d Y H:i:s." , getlastmod()); ?>
0021nobodyさん05/03/14 00:09:05ID:???
imap関数で添付画像を取り出すにはどのようにしたらよいでしょう?
手持ちのマニュアルではimap_fetch_bodyで取り出せるようなことが書いてあるのですが
具体例がなく、またwebで探してみましたがみつかりません。
どなたかお力を・・
00221605/03/14 01:34:39ID:???
>>17
ファイル名が色々変わりうるならそれでもいいですね。

>>20
そ、それです。php 公式サイトマニュアルの filemtime() から参照してた…灯台もと暗し。
>>17 のfilemtime($_SERVER['PHP_SELF']) よりもスマートなので getlastmod() でいきます。
00232105/03/14 04:34:04ID:???
しつこくぐぐってたら見つけました。
0024nobodyさん05/03/14 08:24:46ID:???
>>17
__FILE__
もヨロ
0025nobodyさん05/03/14 11:14:54ID:???
前スレの>>986氏
>ツリーは検索できるんですが、同じパスワードで認証しようとすると行き詰まります。

パスワードの暗号方式が異なるのでは?
Active Directoryは確かKerberosを使っていたと思いますが。
0026nobodyさん05/03/14 12:39:35ID:???
"1234","2649" など、ダブりのない4桁のランダム数値を得るにはどうしたら良いでしょうか?
0027nobodyさん05/03/14 12:52:03ID:NwXBy3ub
test.php
$title = "test";
$file_r = file('./template.php');
$file = implode('', $file_r);
$file = ereg_replace('{(\$[[:alnum:]]+)}', "\\1", $file);
print $file;

template.php
<html>
<head>
<title>{$title}</title>
</head>
<body>
<h1>{$title}</h1>
</body>
</html>

test.phpを実行すると変数が置換されて({$title}をtestに)表示されるようにしたいのですが、"\\1"がおかしいのか
$titleのようにそのまま表示されてしまいます。どうしたらいいのでしょうか。
0028nobodyさん05/03/14 13:15:04ID:???
>>27
preg使う
$file = preg_replace('/{(\$[[:alnum:]]+)}/e', "$1", $file);

または
$title = "test";
include('./template.php');
00292805/03/14 13:16:40ID:???
template.php
<html>
<head>
<title><?=$title?></title>
</head>
<body>
<h1><?=$title?></h1>
</body>
</html>
0030nobodyさん05/03/14 13:22:09ID:???
>>26
ランダム数値を取得するのにmt_rand()やrand()を使うとして、
ダブらないようにするには、過去全ての数値を記録しておくより他は無い。

1. 数値を一個生成する度に過去の数値と比較して有効無効を判定。
 初めての数値だったら、記録用配列に保存。重複していれば再生成。
2. 重複しない数値を入れた配列を用意し、shuffle()を使ってかき混ぜる。
 最初から順番に使っていく。
0031nobodyさん05/03/14 13:52:38ID:ac0vKofO
auのケータイのケータイプラネットで「今週のイチオシ」とか言うサイトの
着メロダウンロードしたんですけど、怪しいサイトの可能性はありますか?
0032nobodyさん05/03/14 14:16:22ID:???
>>31
しらんがな(´・ω・`)
0033nobodyさん05/03/14 17:42:03ID:R34xlKHj
文字列が格納された変数の末尾を切り取って、
切り取った物を別の変数に格納する関数はPHPに標準装備されてますか?
あれば名前を教えてください。
0034nobodyさん05/03/14 17:48:16ID:???
>>33
   〃∩ ∧_∧
   ⊂⌒( ´・ω・`) くぜんぶマニュアルに書いてあんがな
     `ヽ_っ⌒/⌒c
ttp://www.php.net/manual/ja/ref.strings.php
ttp://www.php.net/manual/ja/ref.mbstring.php
0035nobodyさん05/03/14 17:50:58ID:???
>>34
そのAAかわええ。
0036nobodyさん05/03/14 18:00:01ID:9MS+lPog
日本語のファイル名でダウンロードさせたいのですが、
header( "Content-type: application/octet-stream;n" );
header( "Content-Disposition: attachment; filename="". urlエンコードした日本語 .""n" );
print ファイルの中身
とやっても、ファイル名がばけばけくんです。
sjisでもeucでもダメなのですが…

0037nobodyさん05/03/14 18:19:13ID:???
>>36
urlエンコードはドッから沸いた。
0038nobodyさん05/03/14 18:33:20ID:???
>>26

>>30 とは違う意味ならこんな感じか。

$nums = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9) ;
shuffle($nums) ;
$numuniqs = 1000 * $nums[0] + 100 * $nums[1] + 10 * $nums[2] + $nums[3] ;
printf("%04d", $numuniqs) ;
0039nobodyさん05/03/14 19:01:29ID:???
>>36
ブラウザによって全然違うので、これだ、という方法がありません。
0040nobodyさん05/03/14 23:19:48ID:???
>>26
function getPassnum($keta='4'){
 if(!$keta) return False;
 srand();

 
}
■ このスレッドは過去ログ倉庫に格納されています