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

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

■ このスレッドは過去ログ倉庫に格納されています
00019662005/07/12(火) 01:47:09ID:qOoYFCn7
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/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/

立ってなかったんで>>970に近かった自分が勝手に立てちゃいました。
01331212005/07/15(金) 07:50:13ID:???
>>132
すいません、一応専鯖なので誰にも迷惑はかからないかと・・・。
0134nobodyさん2005/07/15(金) 07:51:45ID:???
無駄。
0135nobodyさん2005/07/15(金) 07:57:12ID:???
>>120
XMLと操作次第。
まあDOMで嫁。

>>131
初心者はこれ知らないケース多いね。
テストに出るよー。
0136nobodyさん2005/07/15(金) 08:03:08ID:???
パースがCで完結するから小規模なXMLデータはDOMのほうが良いと聞く
0137nobodyさん2005/07/15(金) 08:05:10ID:???
厨房>>121がてっきり共用鯖を使っているものだと思い込んで
玄人ぶって偉そうに忠告をしたつもりの>>132が、
「専鯖」という強力な返り討ちワードを食らった挙句に
苦し紛れに「無駄」と言い捨て逃亡。

これを「諸行無常」と呼ぶ。
0138nobodyさん2005/07/15(金) 08:09:06ID:???
なるほど。共有鯖だと思われてるという認識だったのね
0139nobodyさん2005/07/15(金) 08:13:37ID:???
>>132みたいな恥ずかしいクズ野郎はこのスレに不要だなww
coqスレ辺りがお似合いだ。
0140nobodyさん2005/07/15(金) 08:14:35ID:???
いや、墓穴掘ってるぞ121
専鯖ってのが真実ならテスト鯖じゃないわけで
0141nobodyさん2005/07/15(金) 08:17:23ID:???
前の鯖がどうこうとか書いてたから、専鯖でもまだ実稼動してないんじゃねーの?
0142nobodyさん2005/07/15(金) 08:17:39ID:???
error_reporting = 0 or エラーログ見てないということは可能性高いと見たね
ローカルでデバッグするのに比べて無駄があるとかそんな話じゃないんじゃないのw>>134
0143nobodyさん2005/07/15(金) 08:22:39ID:???
>>137
別に逃亡してないんですけど。
手元でやってたら0.1秒で気づくミスだろハゲ男。
ていうかメル欄全角かよ。俺ハズカシス。
0144nobodyさん2005/07/15(金) 08:24:20ID:???
>>141
リダイレクトが効かないと気づいてよかったな
0145nobodyさん2005/07/15(金) 08:24:55ID:???
なんとかして自分の貧乏をごまかしたい>>137。
0146nobodyさん2005/07/15(金) 08:29:07ID:???
スルーされて何とか絡みたい>>127
0147nobodyさん2005/07/15(金) 11:21:44ID:???
PHPで、ディレクトリにある最新のtxtファイルを取得して
それを違う名前.txtにリネームして同じディレクトリに作成するって
可能でしょうか??
0148nobodyさん2005/07/15(金) 12:02:51ID:???
>>147 可能
0149nobodyさん2005/07/15(金) 12:12:18ID:???
>>148
ありがとうございます
どこか参考になるページとかないでしょうか?
ぐぐってはみたんですがわからなくて・・・
0150nobodyさん2005/07/15(金) 12:19:59ID:???
>ディレクトリにある最新のtxtファイルを取得して
>それを違う名前.txtにリネームして
>同じディレクトリに作成するって
一気にやろうとしないで、マニュアル見ながら上記を一行ずつ解決していけばいいよ。
0151nobodyさん2005/07/15(金) 12:20:37ID:???
>>149
やりたい事がいまいち分かんないけど
opendir、rename、stat辺りを使えばいけると思うよ
とりあえずマニュアルとにらめっこすることをお勧めします

http://www.php.net/manual/ja/function.opendir.php
http://www.php.net/manual/ja/function.rename.php
http://www.php.net/manual/ja/function.stat.php
0152nobodyさん2005/07/15(金) 13:04:05ID:???
わかりましたマニュアル見て落ち着いてやってみます
どうもありがとうございます
0153nobodyさん2005/07/15(金) 13:07:39ID:???
>>146
遅レスだがワラタw
0154nobodyさん2005/07/15(金) 13:38:55ID:???
超初心者です。
CSVを読み込んで、テーブルで出力しようと思ってます。

CSV内容
"1","十","aaa"
"2","あ","bbb"
"3","表","ccc"

で、読み込んでるとこのソースが
$fp = fopen("hoge.txt","r");
while($row = fgetcsv($fp,1024))
{
echo "<tr>\n";
foreach($row as $column)
{
echo "<td>".$column."</td>\n";
}
echo "</tr>\n";
}
fclose($fp);
です。

EUCならこのままで問題ないのですが、
出力結果をShift_JISで出力したいんです。
ですが、"表"とか"十"が入ってるデータがあると
そこがうまく取り込めないらしくテーブルが壊れます。
うまいこと取り込む方法ってありますか?
0155nobodyさん2005/07/15(金) 14:17:35ID:???
>>154
SJISで出力したいなら、出力前にEUC-JP→SJISの変換を掛ければ良いだけだが。
ファイルの入出力も、ブラウザへも全てSJISでやりたいなら、それぞれの
入出力に変換を掛けるか、内部コードにSJISが利用できるようにコンパイルされた
PHPを使って、スクリプトのコードも全部SJISに統一すれば簡単。
0156nobodyさん2005/07/15(金) 14:18:03ID:???
>>154
EUCで全部やって、出力のみをsjisにするとか。
0x5cが下位バイトに来る文字は決まってるから、それに注意してデータを作成するとか(\をつける)。
01571542005/07/15(金) 15:10:23ID:???
>>156
データは外部から抽出されたものをそのまま使いますし
データに\を付けていくのは大変なのでNGです。

>>155
既存のシステムがなかなか停止できないので、
PHPのコンパイルは避けたいです。
mb_convert_encoding関数を使えばできそうなので
やってみようと思います。ありがとうございました。
0158nobodyさん2005/07/15(金) 16:54:44ID:Fg/gKXLa
SPBのPHP5徹底攻略に載ってるソースについて質問したいのですが、
4行程度のソースなんですが、ここに書いたらまずいですかね?
0159nobodyさん2005/07/15(金) 17:00:33ID:???
どうぞ
01601582005/07/15(金) 17:09:27ID:???
VODAFONEの絵文字をimgにおきかえるスクリプトなんですが
絵文字が2個以上並んでいると最初の一個しか変換されません。
対処ほうありますでしょうか?

$str = "\x1b\$G\x21\x0fabc"; // 絵文字入り文字列
$regex = '/\x1b\$([E-G])([\x21-\x7a])+\x0f/e'; // 絵文字にマッチする正規表現
echo preg_replace($regex, 'sprintf("<img src=\"%02X%02X.gif\">",
ord("$1"),ord("$2"))', $str); // 絵文字をイメージタグに変換して出力
0161軟式PHP2005/07/15(金) 17:23:29ID:???
VODAFONEは同じ絵文字を並べると結合するよ。
$strWrk = 絵文字が入った文章;
do{
$tmp = $strWrk;
$strWrk = preg_replace("/(\x1b[\x24][\x45-\x47\x4F-\x51])([\x21-\x7A])([\x21-\x7A]+)([\xF])/im","$1$2$4$1$3$4",$strWrk);
}while( $strWrk != $tmp );
俺はとりあえずこんな感じにしてるけど。
0162nobodyさん2005/07/15(金) 18:51:21ID:???
download.php という対象ファイルをダウンロードさせるためのphpプログラム

$filename=basename($_GET['filepath']);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$filename\"");
readfile($filepath);

このようなものを作ったのですが、
filepathにrawurldecodeをかければ日本語ファイル名でもダウンロードできるのですが、
ダウンロード時のファイル名が文字化けしてしまいます。

これを解消するにはどのようにすればいいのでしょうか?

これを機会にheader関数もよく勉強したいのでお願いします。
01631582005/07/15(金) 21:01:03ID:???
>>161
理解しようとしてるのですが、なかなかできません。。
$strWrkにvodafone絵文字が入った文章を入れて>>161を通すと絵文字の部分が何かに置き換えられてる
という使い方でよろしいのでしょうか?試してみたのですが echo $strWrk としたところ何も置き換えられないででてくるのですが
使い方間違っていますでしょうか?せっかく書いていただいたので試したいのでよろしくお願いします。
0164軟式PHP2005/07/15(金) 21:14:31ID:???
>>163
161のコードを通すと、連結した絵文字を分離するから、
それに対して、>>160のコードを通したらイけると思うけど。
あと
>>\x1b\$G\x21\x0fabc
は1個の絵文字だから意味ないよ。
0165nobodyさん2005/07/15(金) 21:39:08ID:???
取ってきたデータが、"1"とか"2"だったら、"01"とか"02"にしたい時は
どうしたらよい??
0166nobodyさん2005/07/15(金) 21:40:50ID:???
http://jp2.php.net/sprintf
0167nobodyさん2005/07/15(金) 21:45:48ID:???
stripslashes()したいんだけど値段表記などの\マーク(バックスラッシュ)だけは表示したいという時は
正規表現にかけるしかないのでしょうか?
0168nobodyさん2005/07/15(金) 21:49:44ID:???
同じnameのチェックボックスに、複数チェックを入れると、
PHPだと最後のチェックボックスの値しか取らないみたいなんだけど…

ASPなら自動でカンマ区切り、
Perlなら区切るモジュールで、
PHPは?
0169nobodyさん2005/07/15(金) 21:55:15ID:???
×
<input type="checkbox" name="test" value="test1">
<input type="checkbox" name="test" value="test2">
<input type="checkbox" name="test" value="test3">

○
<input type="checkbox" name="test[]" value="test1">
<input type="checkbox" name="test[]" value="test2">
<input type="checkbox" name="test[]" value="test3">
0170nobodyさん2005/07/15(金) 22:00:21ID:???
>>169
配列にするっつーことですかい?
0171nobodyさん2005/07/15(金) 22:04:07ID:???
>>170
ttp://www.stackasterisk.jp/tech/php/php02_06.jsp
このあたりを見てください
0172nobodyさん2005/07/16(土) 02:36:41ID:???
implodeってムチャクチャ便利じゃん、ぽまえら知ってた?
0173nobodyさん2005/07/16(土) 02:53:22ID:???
知らないのはお前だけです。
0174nobodyさん2005/07/16(土) 06:55:00ID:6rljT00v
swfを生成するmingを使いたいのですが
yumでインストールはできないですよね?

makeしてPHPもコンパイルして構築しないとだめですか?
0175nobodyさん2005/07/16(土) 09:45:29ID:???
>>167
stripslashesが必要な文字列なら\は\\になってるはずだから問題ない
01761582005/07/16(土) 11:16:40ID:???
>>161
すぐ結果報告できなくてすみません。
V603SHから絵文字を入力して試してみました。

$strWrk = $_POST['body']; //$_POST['body'] = (男の子のマーク)(女の子のマーク)
do{
$tmp = $strWrk;
$strWrk = preg_replace("/(\x1b[\x24][\x45-\x47\x4F-\x51])([\x21-\x7A])([\x21-\x7A]+)([\xF])/im","$1$2$4$1$3$4",$strWrk);
}while( $strWrk != $tmp );


$str = $strWrk;// 絵文字入り文字列
$regex = '/\x1b\$([E-G])([\x21-\x7a])+\x0f/e'; // 絵文字にマッチする正規表現
$str = preg_replace($regex, 'sprintf("<img src=\'%02X%02X.gif\'>",ord("$1"),ord("$2"))', $str); // 絵文字をイメージタグに変換して出力
echo $str;

結果↓
<img src='4721.gif'><img src='475C.gif'><img src='4722.gif'>
男の子と女の子の絵文字を入れると間に違うのが入ってしまうのですが、このほかには何個ならべても
おかしな点はありませんでした。完全ではありませんが私としては満足できるレベルになりました。
ありがとうございました。

どこ調べてもDOCOMOの絵文字についてはたくさん書いてあるのですが、VODAFONEの絵文字については
ネット上でどのように書かれてるかなどみつけられませんでした。絵文字について書いてる本がもう一冊あったので買ってみます。
0177nobodyさん2005/07/16(土) 11:19:08ID:???
細菌描画の表示が遅く感じる

<html>
<body>

<?php ほにゃらら ほにゃらら ?>

</body>
</html>

こんな感じでhtmlのなかにスクリプト書きまくってるからかな。
DBの接続とかしてるし。

ob_startとか使ったほうがいいのでしょうか。
0178nobodyさん2005/07/16(土) 12:29:36ID:???
APCを使えば倍以上早くなるっぽい
ttp://acapulco.dyndns.org/mod_uploader/#performance
0179nobodyさん2005/07/16(土) 16:26:26ID:6tLNOCU8
http://script.maikfan.com/
0180nobodyさん2005/07/16(土) 16:30:44ID:???
スマソ、誤爆った
0181nobodyさん2005/07/16(土) 18:18:31ID:mgfMVhVU
色んな場所で使うモノを、
関数かサブルーチンにしようとおもってるんだけど
どやってするの?

<本プログラム>
&GetDate;

<呼び出しプログラム>
sub GetDate{
$date = date('Y/m/d H:i:s', time());
}

とやってみたら、エラーが出たよ。
0182nobodyさん2005/07/16(土) 18:18:36ID:wfLNoi6t
ホームページのヒット率の上げ方教えてください。Yahoo登録以外で。
0183nobodyさん2005/07/16(土) 18:22:01ID:???
認証ページをsslにしてみたんだけど、セッションが切れてしまいます。
どうやったら切れませんか?
0184nobodyさん2005/07/16(土) 18:27:08ID:???
PHPとMySQLでデータベースを作っているのですが、入門書には、
SQL文を発行した際に、例えば
 $sql = "select * from tbl_hoge";
 $rst = mysql_query($sql);
 if(!$rst) print "だめぽ";
といったカンジでMySQLのエラーが出た際にエラーメッセージを表示させていました。
ところがPHPのマニュアルのmysql_queryの部分を見ると
$rst = mysql_query($sql) or die("だめぽ");
というような例文を挙げています。
これらは同じものなのでしょうか?

また、クエリーの結果falseが返ってくるケースとしては
クエリーが文法的に間違っているので撥ねられた場合のみ考えておけばいいのでしょうか?
例えばクエリーに問題がなくともサーバーが不調でMySQLがうまく機能していないとかにも
falseが返ってくることはありえるのでしょうか?
0185nobodyさん2005/07/16(土) 18:49:05ID:???
>>182
落語を見に行った後、SEOでぐぐれ。
0186nobodyさん2005/07/16(土) 18:50:52ID:???
>>181
つPerl
0187nobodyさん2005/07/16(土) 19:02:16ID:???
>>184
orはif文などに出てくるorと同じ
左がfalseなら右を実行するので、
mysql_queryがfalseならdieを実行する。
01881812005/07/16(土) 19:24:56ID:mgfMVhVU
>>187

Perlでしか出来ないってこと?
PHPでやりたいのです…。

Callしなくても、includeするだけで変数使えるとか!?
でも、呼び出しプログラムの方のエラーが出るの。
0189nobodyさん2005/07/16(土) 19:31:11ID:???
>>188
$date = _GetDate();
function _GetDate() { return date('Y/m/d H:i:s'); }

まず調べれ
0190nobodyさん2005/07/16(土) 19:39:24ID:???
>>188
お前が書いてるのはほぼPerlだってこと。
↓くらい読んでから質問しようね。
ttp://www.php.net/manual/ja/language.functions.php
01911812005/07/16(土) 20:11:53ID:???
<本プログラム>
$date = GetDate();

<呼び出しプログラム>
function GetDate(){
$date = date('Y/m/d H:i:s', time());
return $date;
}
としてみたけど、やっぱりえらーが出る。
Fatal error: Cannot redeclare getdate() in ......

呼び出しプログラムの2行目ってなってるけど
2行目は呼び出しの所。
何故〜
0192nobodyさん2005/07/16(土) 20:24:41ID:???
>>191
エラーメッセージを嫁。頭弱いのか?

ttp://jp.php.net/manual/ja/function.getdate.php を読んで
>>189氏が何故_を先頭に付けたか考えろ。
01931812005/07/16(土) 20:30:19ID:???
あ、そか。
getdateて組込関数が既にあるからか…
ごめんなさい、できました。

ついでに、すごく馬鹿な質問なのですが、
呼び出しプログラムの中で書いてある1個の関数の中に、
本プログラムで使いたい変数がたくさんある場合は
一つ一つreturnしないと、やっぱり無理?
0194nobodyさん2005/07/16(土) 20:35:41ID:???
お前はマニュアル読む気がないのか。
0195nobodyさん2005/07/16(土) 20:52:26ID:???
何を言っているのかワケワカラン
関数から複数の値を返したい、ってことを
言っているのか?
0196nobodyさん2005/07/16(土) 21:07:29ID:???
>>184
>or die("だめぽ");
このパターンの例文に関してなんだけど・・・

<html>から<body>と
</body></html>を、自分で作った関数で吐かせてる場合は
dieしちゃうと、そのエラーメッセージより後ろは表示してくれなくなるんで困ってます。この辺は皆さんはどんな風にしょりしてますか?

エラーメッセージの後ろに</body></html>をくっつけておくしかない?
01971842005/07/16(土) 21:16:59ID:???
>>187
なるほど。
エラー表示が1行で済みそうです。
どうもありがとうございました。

>>196
自分はエラー表示用関数を作ってます。
コンテンツを適当なヘッダとフッダではさむ通常の表示用関数に、
最後にexit()をつけたものをエラー表示用関数として使ってます。
01981812005/07/16(土) 21:17:45ID:???
やりたいことは、元々本プログラム内で書いていた、

$date = date('YmdHis', time());
$date_yyyy = mb_strcut($date, 0, 4);
$date_mm = mb_strcut($date, 4, 2);
$date_dd = mb_strcut($date, 6, 2);
$date_hh = mb_strcut($date, 8, 2);
$date_ii = mb_strcut($date, 10, 2);
$date_ss = mb_strcut($date, 12, 2);

を外部ファイルに記述し、色んな処理で手軽に$dateや$date_yyyyを使いたいのです。

ただのincludeしただけでも、
print $date;
print $date_yyyy;
のように使えるとは思うのですが、そうすると、外部ファイルの処理を全て動かすことになるので
よくないかな…と。

すみません、何言ってるかわからなくて…。
あと、マニュアルも一応読んでるんですが、よくわからなくて…。
ごめんなさい(´・ω・`)
0199nobodyさん2005/07/16(土) 21:56:37ID:???
>>198
外部ファイルの処理を全て。。。という部分が判るようで
判らないんだけど、その部分だけを外部ファイル、他の部分は
別の外部ファイルでいいのでは?

--- date.inc.php ---
<?php
$date = date('YmdHis', time());
$date_yyyy = mb_strcut($date, 0, 4);
$date_mm = mb_strcut($date, 4, 2);
$date_dd = mb_strcut($date, 6, 2);
$date_hh = mb_strcut($date, 8, 2);
$date_ii = mb_strcut($date, 10, 2);
$date_ss = mb_strcut($date, 12, 2);
?>

--- etc.inc.php ---
<?php
//その他の処理
?>

--- 本プログラム ---
<?php
require_once('date.inc.php');
require_once('etc.inc.php');

echo $date;
echo $date_yyyy;
?>

次レスに続けるね。
0200nobodyさん2005/07/16(土) 22:00:19ID:???
続きね。
元発言だと関数化したい、という話みたいだけど、関数や引数、戻り値が
あまり判っていないようなので、参考までに。
なるべく元のままで関数化しているので、あまりキレイなコードではないけど。

--- date.inc.php ---
<?php
function _GetDate() {
 return date('YmdHis', time());
}

function _GetDate_yyyy($date) {
 return mb_strcut($date, 0, 4);
}

以下、同様
?>

--- 本プログラム ---
<?php
require_once('date.inc.php');

$date = _GetDate();
$date_yyyy = _GetDate_yyyy($date);

echo $date;
echo $date_yyyy;
?>
02011962005/07/16(土) 22:36:12ID:???
>>197
なるほど。
いいのか悪いのか解らんけど、基本的にスクリプトは最初から最後まで<?phpと?>で囲んでしまって、getメソッドで飛ばしたモード判別変数でcaseで切り替え。
たいていはこんな作りなんで、どうしたものかと、思ってました。
エラーメッセージを引数にした関数を自分で作ってそこで実行すれば便利ですね。
02021982005/07/16(土) 22:49:02ID:???
>>199-200
レス、ありがとう(;_;)

>外部ファイルの処理を全て。。。
出来れば、共通で使うものは同じ外部ファイルにまとめて書きたくて
日付取得以外の処理も色々書いた場合、
ただのincludeだと、必要ない処理部分も読み込むことになるのかな、と思ったのです。

関数化にすれば、同一ファイル内に色々な処理が書かれていても
呼ばれたモノだけを読み込むのかなと思ってるのですが、
考えはあってるのでしょうか…。


>>200は、>>198を元に書いていただいたんだと思うのですが、
キレイにするとどんな感じになるのでしょうか?

一つの関数内で
return $date;
return $date_yyyy;
return $date_mm;
return $date_dd;
return $date_hh;
return $date_ii;
return $date_ss;
てしたら、案の定おかしい事に(-_-;)
0203nobodyさん2005/07/16(土) 22:54:51ID:trCc1XOq
PHP5を使っているのですが

定数宣言をすべて
interfaceに任せてそこでconstで定義しているのですが

PHP5のinterfaceを
Javaのinterfaceのように

public interface Constant {
 public static final String CONSTANT_STRING = "test";
 public static final String CONCATINATEED_CONSTANT_STRING = "This is a " + CONSTANT_STRING;
}
のような定義をしたいのですが

これをPHPでやろうとすると

interface Constant {
 public const CONSTANT_STRING = "test";
 public const CONCATINATEED_CONSTANT_STRING = "This is a ".CONSTANT_STRING; //<-ここでエラー
}

三行目のところでエラーが出てしまいます。
どうしてもJavaのような手法を使いたいのですができる方法はないでしょうか?
Javaのfinal(最初の一回しか代入が許されていない定数)に相当するものが
PHPにもあるかと思ってPHPのfinalを使ってみましたが残念ながらJavaのような定数宣言には使えず、
メソッドのオーバーライド禁止、クラス継承禁止程度にしかつかえないことに気付きがっかりしました。
もしくは私の知識不足かもしれません。

このように、Javaのinterfaceのような定数宣言を実装できる方法はないでしょうか?
もし知っている方がございましたらご教授願います。
0204nobodyさん2005/07/16(土) 22:58:16ID:???
さらに質問ですが
PHPにも、
Javaでよく使われているO-Rマッピングツール Hibernate, Cayenne, Jakarta Torque
などといったもの、
データバインディングツール Castor, Relaxerといったもの
はございますでしょうか?

PHPで複雑なRDBMSやXMLを弄るとき、どうしても煩雑に
なりやすいのでできればこういうソースコード自動生成ツールを使いたいのものです。
0205nobodyさん2005/07/16(土) 23:03:05ID:trCc1XOq
たびたびすみませんが
さらに質問をさせて頂きます。

PHP5ではnamespaceが利用可能であるとどこかのサイトで知ったのですが
2chのあるスレをみると使えなくなったというレスを見つけました。
Facadeパターンなどのようなデザインパターン実装しにくく非常に残念です。

namespaceの概念が無いのでnamespac名.クラス名と指定していたものを
一つのクラス名にnamespace名_クラス名という長い名前にすることで
クラスの重複を避けるという手法があるみたいですが
これではクラス名が長すぎでかつamespace特有の利便性があるからこそ
実現しやすいデザインパターンも実現しにくくなっています。

PHP5では標準ではnamespaceを実現できないみたいですが、
他の方法、ツールやライブラリなどを使ってnamespaceを実現する方法はあるでしょうか?


0206nobodyさん2005/07/16(土) 23:33:38ID:???
Java使え
0207nobodyさん2005/07/16(土) 23:50:26ID:trCc1XOq
>>206
そうしたいのですが仕事上どうしてもPHPを使わないといけないのです。
ミッションクリティカルも少ない単純なアプリケーションですので。
プロジェクトマネージャの判断でPHP5を使うことになりました。
0208nobodyさん2005/07/17(日) 00:04:49ID:???
うんこリーダーだな
0209nobodyさん2005/07/17(日) 00:17:03ID:B/lkcUpB
UTF-8で設定したMySQL4.1に、UTF-8の2バイト文字を登録して、PHPで表示させたら
「?????????????????」と文字化けしてしまった。
同じサーバ上のphpMyAdminだとちゃんと表示される。

$query = 'select * from table';
$result = mysql_query($query);
while($row = mysql_fetch_array($result){
print_r($row);
}

なにか特別なことって必要でしたっけ?
0210nobodyさん2005/07/17(日) 00:32:04ID:???
>>202
昔ながらのこんなテクニックもある。

function a(){
return array($a,$b,$c,$d);
}

list($a,$b,$c,$d) = a();
0211nobodyさん2005/07/17(日) 01:35:35ID:???
>>209
自分で書いたコードの方にはMySQLにコネクション張った後に、
「接続クライアントの文字コードはUTF-8だよ」って
MySQLサーバに送ってないから、デフォルトのlatinだって
思われてるんで、latinで表現できないのが?になってるんでね?
0212nobodyさん2005/07/17(日) 04:38:53ID:???
>>202
includeするとファイルの内容全てが読み込まれるから、関数にする、しないは
関係ない。
includeファイルの中で関数にしなかった部分はincludeされた時点で実行される。
関数にした場合はその関数を呼び出した段階で実行される。
そもそも関数そのものが理解できてないんぢゃないかと思われ。
0213nobodyさん2005/07/17(日) 06:53:32ID:???
本当にくだらない質問だと思われるかもしれないのですが、
1週間前にPHPをインストールして始めた初心者なので、お許し下さい。

$a = "あああ";
echo $a;

この"あああ"の部分ですが、ダブルクォーテーションがなくても
表示されるのですが、なくてもいいんでしょうか?
どういう条件で""で囲むのでしょうか。

数字はつけない、文字列はつける、変数には付けない でやっているのですが
このままでいいのでしょうか?
0214nobodyさん2005/07/17(日) 07:09:58ID:???
$a = あああ;
ってこと?
その場合、「あああ」の部分はPHPのパーサが未定義の定数とみなして、"あああ"に再解釈する。
危ないので文字列にはきちんとクォーテーション(ダブルorシングル)つけるべし。
とりあえずマニュアルじっくり読んでガンガレ
http://www.php.net/manual/ja/
0215nobodyさん2005/07/17(日) 07:46:41ID:???
>>213 >>214
あのマニュアルの中から探すのはチト困難かも。
この辺りを参照汁。
http://www.php.net/manual/ja/language.constants.php

ついでに " で囲った場合と ' で囲った場合の動作の違いも理解汁。
http://www.php.net/manual/ja/language.types.string.php
0216nobodyさん2005/07/17(日) 09:11:30ID:???
認証ページをsslにしてみたんだけど、普通ページに戻ったときに
セッションが切れてしまいます。

どうやったらセッションを切らずにできますでしょうか。
0217nobodyさん2005/07/17(日) 12:46:10ID:???
>>208
メモリやパフォーマンスの都合上、
データを定期的に渡すだけの
簡単なものにはJavaを使いたくないそうです。
本当に簡単なプログラムなんですよ。
そのかわりXMLデータとRDBMSのテーブルの数が
多すぎですが。橋渡しをするだけです。
0218nobodyさん2005/07/17(日) 14:07:36ID:???
投稿したデータをデータベースに登録する際に
下記(入門本そのままのやり方)のようにエスケープ文字の除去・タグ無効化・カナ変換を行っているのですが、
 $comments = htmlspecialchars(stripcslashes($comments));
 $comments = mb_convert_kana($comments, "KV", "SJIS");
改行のみ維持させたいのでぐぐってみたところ http://php.s3.to/tt/tt5.php の「複数行の入力」という記事が見つかり、
要はタグを無効にした後で、 改行コードを<BR>に変換するというやり方であると理解したのですが、
 $comments = htmlspecialchars($comments);
 $comments = str_replace("\r\n","\r",$comments);
 $comments = str_replace("\r","\n",$comments);
 $comments = str_replace("\n","<BR>",$comments);
 $comments = stripcslashes($comments);
でいいのでしょうか?
「Shift-JISの場合バッククォートを除去」とかstripslashesとstripcslashesの違いがよく分かりません。
また、このURLにある参考ソースを見ると上記のstripcslashes()を行っていないようなのですが必要ないのでしょうか?
文字コードに関しては「データの文字コードと見る際(ブラウザ)の文字コードが一致してないと化ける」くらいの認識しかありません。
どなたかアドバイスよろしくお願いします。
0219nobodyさん2005/07/17(日) 18:49:47ID:5K+3/9Xz
PHPを使ってRSSの画像もサイトに表示できるコード載せてるサイトありませんか?
0220nobodyさん2005/07/17(日) 20:26:12ID:???
>>214
ありがとうございます。なるほど、PHPで再解釈してくれてるだけなんですね。

>>215
助かります。このマニュアルは、辞書的な使い方がいいのでしょうか。
恥ずかしながら、今のスキルでは理解するまでかなり時間が掛かってしまいます。

購入した本を元に勉強しているのですが、初心者向けに解説しているPHPサイトで
定番的なところとかあるのでしょうか?お勧めがあればどなたか教えてください。
0221nobodyさん2005/07/17(日) 21:11:28ID:???
徹底攻略のPDFは初心者向けだと思う。
0222nobodyさん2005/07/18(月) 00:14:57ID:tJQ/fctA
質問させてください。
ある文字列中の特定の文字がマルチバイトかどうかを判定するにはどうすればいいでしょうか?

具体的には、
abcdefgあいうえお0123456789
という文字列があった場合に、10バイト目がマルチバイトかどうかを判定したいです。

substrを使って切り取る場合に文字化けして困ってます。
全角を1文字としてカウントするmb_substrでは都合が悪いです。

よろしくお願いします。
0223nobodyさん2005/07/18(月) 00:34:05ID:???
>>221
ありがとうございます。マンモスのやつでしょうか?
やはり、あれは良いのですね。
pdfだと見辛いので書籍購入してしまいました。
0224nobodyさん2005/07/18(月) 01:38:51ID:???
>>222
mb_substrのかわりにmb_strcut
0225nobodyさん2005/07/18(月) 02:00:26ID:tJQ/fctA
>>224
ありがとうございます。
mb_strcutも一度試したのですが、使い方が間違っていたようです。
おかげさまでばっちり動作しました。
感謝感激です。
0226nobodyさん2005/07/18(月) 02:29:09ID:???
$a=1; $b=&$a; = ハードリンクだと思うのですが、
この後 unset($a); で、$bも空になるような、シンボリックリンクの様に扱うことは出来るでしょうか?
0227nobodyさん2005/07/18(月) 04:04:16ID:???
>>226
ない。が
NULLを代入すると全部NULLにはなる。
0228nobodyさん2005/07/18(月) 10:10:47ID:???
初心者向けのPHP本としては、紙谷さんの本がオススメ。
0229nobodyさん2005/07/18(月) 10:18:15ID:???
PHPの変数代入をハードリンク、シンボリックリンクと表現する>>226に萌
0230nobodyさん2005/07/18(月) 10:40:28ID:???
>>229
ttp://jp.php.net/manual/ja/language.references.php

マニュアルにも萌えてください。
0231nobodyさん2005/07/18(月) 13:02:11ID:8pn6XAVH
$a = "あいうえおaaa";
echo mb_strlen($a);

13が結果として出るのですが、マルチバイト文字を1として数えされるにはどうすればよいでしょうか?
02322312005/07/18(月) 13:06:37ID:???
すみませんエンコーディングの指定を間違えてました。
■ このスレッドは過去ログ倉庫に格納されています