【PHP】下らねぇ質問はここに書き込みやがれpart20
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/04/28(金) 04:12:33ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
本スレ【PHP】質問スレッドpart34【php】
http://pc8.2ch.net/test/read.cgi/php/1142903954/
【PHP】下らねぇ質問はここに書き込みやがれ Part19
http://pc8.2ch.net/test/read.cgi/php/1144513878/
過去スレは>>2-3あたり
0083nobodyさん
2006/04/30(日) 13:37:32ID:???どうすればいいんですか?
$str = "あ";
if(mb_ereg("あ",$str)){
print "OK";
}
$str = "一";
if(mb_ereg("一",$str)){
print "OK";
}
0084nobodyさん
2006/04/30(日) 13:44:31ID:???0085nobodyさん
2006/04/30(日) 13:48:57ID:???どこまで真面目にやるかにもよるんだが、
単純にHTMLファイル1枚だけ拾ってくるなら標準でfile()などが対応するし、
libwww並のことがしたいならPEARでHTTP_Requestってのがあるよ。
0086nobodyさん
2006/04/30(日) 13:51:23ID:msE59x+3ありがとう(・∀・)! 調べてみるよ。
0087nobodyさん
2006/04/30(日) 16:20:47ID:???(言語は共にja)これって文字化けしますか?
初歩過ぎてすいません。
0088nobodyさん
2006/04/30(日) 16:23:47ID:???>これって文字化けしますか?
>
>初歩過ぎてすいません。
やってみればわかるだろ。
とりあえずmb_convert_encoding()しとけ。
0090nobodyさん
2006/04/30(日) 16:30:52ID:???0091nobodyさん
2006/04/30(日) 16:36:26ID:???0093nobodyさん
2006/04/30(日) 16:43:12ID:23/3bPSVShift-JISで出力されてしまいます。
fputs($file,"にほんご");
etf-8で出力したいのですが、
毎回、mb_convert_encoding()で変換してから
fputs関数に渡さないと出来ませんか?
最初から、文字コードを指定してファイル出力する
方法があるならば教えてください
0094nobodyさん
2006/04/30(日) 16:43:41ID:???0095nobodyさん
2006/04/30(日) 16:48:37ID:???0097nobodyさん
2006/04/30(日) 16:51:34ID:???毎回すればいいじゃない。
fputs($file,mb_convert_encoding("にほんご", "UTF-8"));
ってしとくだけでしょ。
0098nobodyさん
2006/04/30(日) 17:01:19ID:???有難うございます。調べてみます
>>95
これは僕へのレスですかね?
>>97
マジレスですか?
一様、釣られるてみます。
それが面倒だから質問してるのに・・・
0099nobodyさん
2006/04/30(日) 17:02:34ID:???0101nobodyさん
2006/04/30(日) 17:03:42ID:???0102nobodyさん
2006/04/30(日) 17:07:37ID:???> 一様、釣られるてみます。
一様に釣られたの?
それとも一応釣られたの?
もし「一応」の誤用だったらカッコワル(´・ω・')
0105nobodyさん
2006/04/30(日) 17:25:12ID:???$name に$_POST['name']が入っていて、
setcookie(namecookie','$name);と設定し、$COOKIE['namecookie']を投稿フォームの名前のvalueに設定しています。
しかし、それでは投稿後名前欄に$nameと出力されるだけで、先ほど投稿した名前は表示されません。
このような場合、どうしたらよろしいでしょうか?
010687
2006/04/30(日) 17:31:54ID:???mb_convert_encoding()
この関数はインクロードする時(UTF-8のファイル)に記述?出力する(eucのファイル)時に記述?
どちらでも良いでしょうか?
0107nobodyさん
2006/04/30(日) 17:40:55ID:???というかオマエさんのソースファイルのエンコードは何なんだ?
>>105
まずソースをしっかり晒せ
それじゃシンタックスエラー出まくりだ
#おそらくこれ↓で直る
# setcookie( 'namecookie', $name )
# $_COOKIE['namecookie']
0109nobodyさん
2006/04/30(日) 17:42:36ID:???0110nobodyさん
2006/04/30(日) 17:43:05ID:???typoが多すぎるな。。
$nameになる -> $_COOKIE['namecookie']を表示するなどしてチェックする
-> $_COOKIEをチェックする
-> setcookieを疑ってみる
ぐらいやって欲しいものだ。
>>106
だから、俺はどのエンコードで喋ればいいんだ!?
0111nobodyさん
2006/04/30(日) 17:52:28ID:???cronでphpを実行するにはphpの記述を変える必要があるんですか?
というかcronの書き方がわかんないのでphpを起動させるシェルスクリプト書いて下さい
0112nobodyさん
2006/04/30(日) 17:57:48ID:???うん、マジレス。
HTTPへの文字列出力(標準出力)だけならともかく、
バイナリが含まれるかもしれない各ファイルへの出力を
自動文字コード変換なんて設定あったら確実にバグるって。
これを実現するには「絶対に文字列しか出力しない出力関数」を用意する必要があって、
だったら
function fputs_utf8($fp, $str) {
return fputs($fp, mb_convert_encoding($str、"UTF-8"));
}
とか自前で用意するだけで事が足りる。
> 皆さん、ホントに>>97さんの方法でやってるんですか?
というか、エンコードの必要なものと必要じゃないものをそれぞれ区別して処理してるから
「出力するすべてのものをUTF-8変換」なんてアホなこと自体やったことないっす
0118nobodyさん
2006/04/30(日) 18:13:10ID:???実装の方法を分かる方いますか?
http://tv.yahoo.co.jp/tv_show/nhk/komyo/photo/index.html?p=17_01
プロパティの画像URL
http://img.yahoo.co.jp/images/clear.gif
実際の画像URL
http://tv.yahoo.co.jp/tv_show/nhk/komyo/photo/shot/17/01.jpg
0119nobodyさん
2006/04/30(日) 18:16:30ID:???0120nobodyさん
2006/04/30(日) 18:20:20ID:???何気ない書き込みだったとしても、多数の typo をする奴はマには向いてない。
0121nobodyさん
2006/04/30(日) 19:00:32ID:???HTMLソースくらい見れ
<td background="images/h_photo01.jpg"><img src="http://img.yahoo.co.jp/images/clear.gif"></td>
0124nobodyさん
2006/04/30(日) 23:05:56ID:23/3bPSVサーブレットでの処理をいくつかのファイルに分けようと思っています。
そのため、以下のようなファイルを一つ生成し
クライアントは、このファイルにまずリダイレクトしてしました。
hoge1.php,hoge2.php,hoge3.phpが
それぞれ異なる処理ロジックを持つようにしています。
ですが、これだと入力フォームの情報がhoge1,2,3.php
に渡りません。
どうしたらhoge1,2,3.phpに入力フォーム情報を
渡す事が出来ますか?
<?php
header("Location: hoge1.php");
header("Location: hoge2.php");
header("Location: hoge3.php")
header("Location: hoge.html")
?>
0125124
2006/04/30(日) 23:14:11ID:???入力フォームからリダイレクトされたサーブレットから
それらを呼び出すようにした方がいいっすかね?
0126nobodyさん
2006/04/30(日) 23:16:48ID:???<?php
require("hoge1.php");
require("hoge2.php");
require("hoge3.php");
header("Location: hoge.html");
?>
でいいと思う
0127nobodyさん
2006/04/30(日) 23:18:38ID:???phpにアクセスしてヘッダー送信→RSSソース表示という手順を踏めばしっかり表示されるのですが、
RSSのソースのファイルをphpに生成してRDFファイルにアクセスすると表示してくれません・・・・
解決方法ありますでしょうか。。。
サーバーはロリポップです。
0128124
2006/04/30(日) 23:21:25ID:???本当に本当に有難うございました
0129nobodyさん
2006/04/30(日) 23:23:06ID:???0131nobodyさん
2006/05/01(月) 00:13:12ID:???0132nobodyさん
2006/05/01(月) 00:33:09ID:???ttp://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=******&Operation=ItemLookup&IdType=ASIN&ItemId=B000AYEI5Y&ResponseGroup=Large
ttp://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=******&Operation=ItemLookup&IdType=ASIN&ItemId=B000AYEI5Y&ResponseGroup=SalesRank
上記二つを試したけど、期待した結果XML(<SalesRank>〜</SalesRank>)が
返されなくて困ってます。。。
0133nobodyさん
2006/05/01(月) 00:59:11ID:???0134nobodyさん
2006/05/01(月) 01:04:11ID:???0135nobodyさん
2006/05/01(月) 01:10:54ID:???0136127
2006/05/01(月) 01:14:33ID:???.htaccess入れたら正常に閲覧できるんですが、何かほかの方法ってありますでしょうか?
phpで出力の方は成功しました。
0137nobodyさん
2006/05/01(月) 01:22:37ID:W7/kimMe指定すると追加でファイル出力されるんですが、
ファイルの最後に出力されてしまいます。
どうしたら、ファイルの最初に追加(挿入)する
事ができますか?
0138127
2006/05/01(月) 01:30:35ID:???もとのログファイルを
$lines = file("ログファイル");
で読み込んでおいて、
fputs(ファイルポインタ,"文字列");
fputs(ファイルポインタ,$lines);
とするか
fopenの第二引数にr+を指定するといいと思います
0140137
2006/05/01(月) 02:09:05ID:???レス有難うございます。
$lines = file("hoge.txt");
fputs(ファイルポインタ,"test");
fputs(ファイルポインタ,$lines);
出力結果を見ると
testは出力されるのですが、$linesはArrayと表示されてしまいます。
あと、fopenの第二引数にr+を指定すると挿入されてしまいます。
確かに挿入できるか質問しましたので質問の仕方が悪かったです。
これは、
例えば、hogehogehogeという内容のhoge.txtがあった場合、
$file=fopen("hoge.txt","?");
fputs($file,"HOGE");
というコーディングを書いた場合、
"HOGEhogehogehoge"という出力結果が欲しいです。
0141nobodyさん
2006/05/01(月) 02:27:22ID:???file()をfile_get_contents()にするといいよ。
基本的にファイルに対して「途中に内容を増やす」というのは無くて、
元ある内容に上書きするか末尾に追加するしかないっす。
(元々のデータの位置はどうやっても変わらない)
なので挿入しようと思ったら、1度読み込んだ上で
ファイル全体を出力しなおす、という手段が必要になる。
0142137
2006/05/01(月) 02:41:17ID:???file()は行毎の配列を戻り値とするという事が今解りました。
以下の方法で、やりたい事ができました
ありがとうございました。
$arr = file("hoge.html");
$file=fopen("hoge.html","w");
flock($file,LOCK_EX);
fputs($file,"test\n");
foreach ($arr as $line) {
fputs($file ,$line);
}
flock($file,LOCK_UN);
fclose($file);
>>141
レスありがとうございます
file()とfile_get_contents()、何が違うんでしょうか?
マニュアル引用
string file_get_contents ( string filename [, bool use_include_path [, resource context [, int offset]]] )
offsetで指定した場所から開始し、 ファイルの内容を全て文字列に読み込むこと以外はfile()と等価。
つまり、ファイルを最初から全部読み込む場合は、file()で大丈夫ですかね?
0143nobodyさん
2006/05/01(月) 02:54:05ID:???file()は1行ごとに分解した配列で取得。
file_get_contents()は全部まとめて1個の文字列として取得。
0145nobodyさん
2006/05/01(月) 15:46:56ID:???session.save_handler files
session.save_path no value
の状態で、セッションを利用できているのですが、
この場合、セッションファイルはどこに保存されていますか?
0146nobodyさん
2006/05/01(月) 16:07:35ID:???インストール出来ないのは私だけ?
0149nobodyさん
2006/05/01(月) 16:16:10ID:???まだ生きてたんだ。namazuがバージョンアップしてから使えるかわからずほったらかし。
でも、前(PHP4.1?とnamazu2.0.12?あたり)は素直にインスコできたよ。
0150nobodyさん
2006/05/01(月) 16:32:43ID:???去年の11月にphp-usersに投稿にあったよ。
ttp://ns1.php.gr.jp/pipermail/php-users/2005-November/028127.html
0151nobodyさん
2006/05/01(月) 22:10:25ID:???ありがとうございます。
事例と同じでautoconf(2.13,2.53,2.59)がインストールされています。
同様にすると解決出来るかもしれませんね。
リンクして今後に弊害が出ると思うとちょっと怖いのであきらめます。
0152nobodyさん
2006/05/01(月) 23:12:18ID:???preg_matchで↑より16進数の簡単な表現ない?
0155nobodyさん
2006/05/01(月) 23:48:06ID:???0157nobodyさん
2006/05/02(火) 07:22:20ID:???0158157
2006/05/02(火) 07:23:29ID:???エラーが発生した時点でスクリプトを強制終了して、空白のHTMLや
CGI/Perlみたいに 500 Internet Server Error を返したいんです。
※1
ini_set("error_reporting", E_ALL | E_STRICT)
0159152
2006/05/02(火) 07:41:22ID:???preg_matchでマッチした部分を取り出すのが目的なので...
^とか$使って紛らわしくしてましたね
でもctype_xdigit知らなかったのでサンクス
0160152
2006/05/02(火) 07:51:13ID:???ttp://jp.php.net/manual/ja/function.set-error-handler.php
まだ詳しく読んでないけどこれ無理かな?
0162nobodyさん
2006/05/02(火) 14:25:42ID:???.php .cgi .html
の3つだとそれぞれ違いがあるのでしょうか?
0163nobodyさん
2006/05/02(火) 14:37:56ID:???全部同じように処理しようと思えばできるし、.htmlをPHP、.phpをCGI、.cgiをHTML出力にすることもできる。
0166nobodyさん
2006/05/02(火) 18:36:18ID:???返すのはどうしたらよいですか?
0167166
2006/05/02(火) 18:49:20ID:???return $return_array;
ありがとうございました。
0168nobodyさん
2006/05/02(火) 19:56:21ID:???0169nobodyさん
2006/05/02(火) 23:39:23ID:rocsvmuHうざいよ
0170nobodyさん
2006/05/02(火) 23:45:46ID:???0171nobodyさん
2006/05/02(火) 23:48:27ID:???0172nobodyさん
2006/05/03(水) 01:18:16ID:???0173nobodyさん
2006/05/03(水) 01:27:38ID:???それより、死んで。
0174nobodyさん
2006/05/03(水) 02:20:40ID:Zf4m7aAt0175nobodyさん
2006/05/03(水) 03:52:15ID:???○ ← ラジオボタン
qst-------------------------------- ○ opt1 ○ opt2 ○ opt3
qst-------------------------------- ○ opt1 ○ opt2 ○ opt3
qst-------------------------------- ○ opt1 ○ opt2 ○ opt3
こんな感じでループさせたいんですけど・・・。
今の状態では、
qst-------------------------------- opt1 opt2 opt3
qst-------------------------------- opt1 opt2 opt3
qst-------------------------------- opt1 opt2 opt3
というようにqst,opt1,opt2,opt3を行ごとにループさせて表示することは出来ています。
ラジオボタンを表示するには、qstとoptを別に取り出してoptの前にラジオボタンを表示するタグをくっつけてループさせるしかないんでしょうか?
説明下手ですいません;;
0176nobodyさん
2006/05/03(水) 03:55:33ID:???0177nobodyさん
2006/05/03(水) 03:59:34ID:???普通にまとめて取り出して、表示するときにラジオボタンのタグをくっつけて表示するだけ。
ぶっちゃけ「めちゃめちゃ当たり前」のことでしかないので、話だけ聞いてると
どこで困ってるのか想像もできない。何故そんなので困る??
まず、今はどういうプログラムで取り出しと表示をやってるのか具体的に書け。話はそれからだ。
0178175
2006/05/03(水) 04:15:58ID:???--------------------------------------------------------------------qst,ans1,ans2,ans3を表示
$testNo = $_REQUEST["test"]; //テスト問題を取得
$gateway = new TestGateway(); //TestGatewayクラス内で下のgetQuestion($test)を定義
$table = $gateway->getQuestion($testNo);
$dataview = new DataTableView($table);
$html = $dataview->render();
print_r($html);
-----------------------------------------------------------------------------qst,ans1,ans2,ans3を取り出す
public function getQuestion($test)
{
$link = $this->connect();
$qry = "SELECT qst, ans1, ans2, ans3 FROM db WHERE test=\"$test\"";
$result = mysql_query($qry,$link);
if (!$result) {
throw new Exception(mysql_error($link),QUERY_FAILED);
}
else if (mysql_num_rows($result) == 0 ) {
throw new Exception("",NO_RESULTS);
}
// extract data from table and populate object
$row = mysql_fetch_array($result, MYSQL_ASSOC);
mysql_close($link);
return $row;
// now return results in DataTable
$table = new DataTable();
// now fill table with data
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$table->addRow($row);
}
return $table;
}
0179175
2006/05/03(水) 04:16:56ID:???--------------------------------------------------------------------qst,ans1,ans2,ans3を表示
$testNo = $_REQUEST["test"]; //テスト問題を取得
$gateway = new TestGateway(); //TestGatewayクラス内で下のgetQuestion($test)を定義
$table = $gateway->getQuestion($testNo);
$dataview = new DataTableView($table);
$html = $dataview->render();
print_r($html);
-----------------------------------------------------------------------------qst,ans1,ans2,ans3を取り出す
public function getQuestion($test)
{
$link = $this->connect();
$qry = "SELECT qst, ans1, ans2, ans3 FROM db WHERE test=\"$test\"";
$result = mysql_query($qry,$link);
if (!$result) {
throw new Exception(mysql_error($link),QUERY_FAILED);
}
else if (mysql_num_rows($result) == 0 ) {
throw new Exception("",NO_RESULTS);
}
// extract data from table and populate object
$row = mysql_fetch_array($result, MYSQL_ASSOC);
mysql_close($link);
return $row;
// now return results in DataTable
$table = new DataTable();
// now fill table with data
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$table->addRow($row);
}
return $table;
}
0180175
2006/05/03(水) 04:18:21ID:???<?php
class DataTableView {
private $table;
private $tid = null;
private $tcls = null;
public function __construct($datatable) {
$this->table = $datatable;
}
public function setId($id) { $this->tid = $id; }
public function setClass($cls) { $this->tcls = $cls; }
public function render() {
$html = "<table " ;
if (isset($this->tid))
{
$html .= "id=\"$this->tid\" ";
}
if (isset($this->tcls))
{
$html .= "class=\"$this->tcls\" ";
}
$html .= ">\n";
続きます
0181175
2006/05/03(水) 04:18:52ID:???if ($this->table->numRows() > 0 )
{
// now render table contents
// get table iterator
$html .= "<tbody>\n";
$iterator = $this->table->getIterator();
while($iterator->valid()) {
$html .= $this->renderRow($iterator->current());
$iterator->next();
}
$html .= "</tbody>\n";
}
// now render table end
$html .= "</table>\n";
return $html;
}
private function renderRow($row){
$rowhtml ="";
if (count($row) > 0 )
{
$rowhtml .= "<tr>";
foreach($row as $item)
{
$rowhtml .= "<td>$item</td>";
}
$rowhtml .= "</tr>\n";
}
return $rowhtml;
} }
?>
0182175
2006/05/03(水) 04:22:07ID:???とりあえず今こんな感じです。
授業中にもらったサンプルスクリプトを元に作ってみました。
2カラム目から4カラム目(ans1,ans2,ans3)までだけにラジオボタンのタグをくっつけるというのがよく分からないです。
■ このスレッドは過去ログ倉庫に格納されています