くだすれPHP(超初心者用)3
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/10/25(木) 16:04:31ID:???もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。
PHP Home Page
http://www.php.net/
http://jp.php.net/
---前スレのテンプレここまで---
前スレ: くだすれPHP(超初心者用)2
http://pc11.2ch.net/test/read.cgi/php/1164617202/
適当に関連スレ(マルチはだめぽ)
【PHP】下らねぇ質問はここに書き込みやがれ 57
http://pc11.2ch.net/test/read.cgi/php/1193062236/
△▲ WebProg 初心者の質問 Part16 ▼▽
http://pc11.2ch.net/test/read.cgi/php/1187729623/
完走したら、雑談スレで待機でどうでしょう
【総合】 Webprog板質問雑談スレッド 1
http://pc11.2ch.net/test/read.cgi/php/1131016915/
0652名無しさん@アイコンいっぱい。
2008/04/12(土) 19:25:23ID:QH24pWr1http://kakitarou.com/url/files/accel.html
0653650
2008/04/12(土) 19:47:17ID:???やってみましたがmb_send_mailの前に
mb_language("Japanese");を入れているのですが、mb_languageですでにコケてます・・・
0654nobodyさん
2008/04/13(日) 08:42:00ID:???それならmailで、日本語は自分でエンコードする。
0655nobodyさん
2008/04/14(月) 18:50:19ID:zmu1J1y2つけなかったため質問させてください (使っている PHPのバージョンは 5.2.5 です)
画像ファイルのデータサイズを取得、3桁区切りさせたくて以下のように書いて成功しました
掲示板PHPスクリプト内で ― (α)
$sizeorg = filesize($img)
$size = number_format($sizeorg)
HTMLテンプレート側に
{$size}
ですが、(α)の書き方をもう少しスマートに、雰囲気的には
$size = number_format(filesize($img))
のようにまとめたく、参考になりそうな情報を教えていただければありがたいのですが
どうぞよろしくお願いいたします
0656nobodyさん
2008/04/14(月) 19:44:26ID:???0657nobodyさん
2008/04/14(月) 19:45:30ID:???俺の場合number_formatを修飾子にしちゃってる(結構常識?)
$smarty->register_modifier("number_format","number_format");
で
{$sizeorg|number_format}
が俺的にはスマート
表示の問題をテンプレートで完結できるからね
0658nobodyさん
2008/04/14(月) 19:46:42ID:???0659655
2008/04/14(月) 22:17:10ID:xlgR9yhaそのようにやってみたのですがエラーを吐いてしまいまして先の質問のように書いたのですが、
もう一度試しましたらエラーなく出力させることができました
# mistipo でもしていたのでしょうか…orz
>>657
自分の場合のテンプレートは画像掲示板のために用意されている HTML になります
何はともあれ、教えていただいた方法も面白そうですので勉強のため試してみたいと思います
>>658の方も含めて早々にご回答いただきまして、みなさんありがとうございました!
0660655
2008/04/14(月) 22:19:17ID:???×mistipo ってなんなんだ…
○typo : タイプミス
最後まで失礼しました…○...| ̄|_
0661nobodyさん
2008/04/18(金) 14:50:28ID:???pear upgrade -f -o http://pear.php.net/get/PEAR-1.3.6.tgz
downloading PEAR-1.3.6.tgz ...
Starting to download PEAR-1.3.6.tgz (106,880 bytes)
.........done: 106,880 bytes
HTTP error, got response: HTTP/1.1 410 Gone
Didn't receive 200 OK from remote server. (HTTP/1.1 410 Gone)
なぜ??変なレスポンスヘッダかえってくる??
0662nobodyさん
2008/04/18(金) 14:55:40ID:???本家どおりの手順でいけますた・・
pear upgrade --force http://pear.php.net/get/Archive_Tar http://pear.php.net/get/XML_Parser http://pear.php.net/get/Console_Getopt-1.2.2
pear upgrade --force http://pear.php.net/get/PEAR-1.3.3 (_IF_ your existing version is older than 1.3.3)
pear upgrade --force http://pear.php.net/get/PEAR-1.4.3.tar
pear upgrade PEAR
0663nobodyさん
2008/04/19(土) 10:31:27ID:???0664nobodyさん
2008/04/19(土) 10:38:34ID:???0665nobodyさん
2008/04/19(土) 17:43:29ID:???Fatal error: Class 'XSLTProcessor' not found in 場所
と出力されてしまいます。(クラスが見つからないということですよね。
これはどう足掻いてもXSLは使えないということなのでしょうか。
もし解決策があれば教えてください。
PHPのバージョンは5.2.3、phpinfo()のConfigure Commandの中で「xsl」を含むものは、
'--with-xslt-sablot'と'--enable-xslt'です。
それ以外にxslを含むところはありませんでした。
よろしくお願いします。
0666nobodyさん
2008/04/19(土) 19:36:06ID:???>PHP 5には、デフォルトでXSLエクステンションが含まれており、 configureに引数--with-xsl[=DIR] を追加することにより有効にすることができます。
>DIR は libxslt をインストールしたディレクトリです。
?
0667665
2008/04/19(土) 20:22:57ID:???ありがとうございます、それについて詳しく調べていたら、
「configureに引数--with-xsl[=DIR] を追加すること」
は管理者でないとできないようなことが分かったので、メールしてみることにします。
ありがとうございました。
0668nobodyさん
2008/04/20(日) 00:58:45ID:eoYRqpAsより移動してきました(向こうでの質問は打ちきっています)。
[やりたいこと]
UTF-8のローマ数字「�D」をeucJP-winに変換したい。
[やったこと]
mb_convert_encodingを使い、EUC-JPのエンコードにてHTMLタグと一緒にprintする、具体的には:
print "<td>".htmlspecialchars(mb_convert_encoding("�D", "eucJP-win", "UTF-8") )."</td>";
を行う
[現状]
該当部分の出力が「場・/td>」となり、意図した表示になりません。
[その他]
http://pc11.2ch.net/test/read.cgi/hp/1205922529/197
によれば、
>EUCでの�Dは0xFCF5。
>が、
>mb_convert_encoding("�D", "eucJP-win", "UTF-8");
>を通すと0xF3F7が返ってくる。
ということで、このままのやり方ではでは埓が開きそうもありません。
なにかいい方法はありますでしょうか。
0669nobodyさん
2008/04/20(日) 02:34:41ID:???一部だけ文字コードを変えるってことは変換したvは文字化けした状態で表示される。
文字化けした文字によっては次の文字の一部を一つの文字とみなされ、「場・/td>」みたいなことになる。
意図した表示って、どんな結果を求めているのかを具体的に書けって。
0670nobodyさん
2008/04/20(日) 02:57:03ID:???0671nobodyさん
2008/04/20(日) 02:59:53ID:???print "<td>\xFC\xF5</td>" と等価な状態にしたいんだけど
そうならないのでどうしたもんですかね、という質問なんでしょう。
確かに 0xFCF5 にならんね。
0672nobodyさん
2008/04/20(日) 11:24:19ID:???いや、そんな質問じゃないでしょう。
そんな表示を期待してるとしたらちょっと頭おかしいんじゃないですか?
文字化けって言葉を聞いたことくらいあるでしょうし。
0673187
2008/04/20(日) 11:41:36ID:aetxNfgk「�D」と表示したいのに「場・/td>」となる、ということです。
>671
そうなんです。あれから再びネットでも調べているんですが、
どうにもわかりません。
>672
すみませんが、お返事の内容がよく分かりません。
0674187
2008/04/20(日) 12:01:37ID:???先ほど、こちらに移動する前のスレッドに、移動後に書き込まれていた方法を
試したところ、意図した結果で表示することができました。
(具体的には、PHP側でeucJP-winに変換せず、UTF-8のままレスポンスし、
デコードはブラウザーに任せる)
なので、今回の質問は、これにて終了させていただきます。
お答えいただいた皆様、ありがとうございました。
0675nobodyさん
2008/04/20(日) 12:10:35ID:nhn/o6zf以下のようなスクリプトを作り、dbAccessでSQLiteと接続し、
dbCloseで切断するようにしたのですが、「sqlite_close() expects parameter 1 to be resource, n・・・」
というエラーがでてうまく切断できません。
どのような原因かわかりますでしょうか?
dbAccess内にsqlite_close()を入れた場合はエラーは吐きませんでした。
function dbAccess() {
$con = sqlite_open("DB/database");
}
function dbClose() {
global $con;
sqlite_close($con);
}
0676nobodyさん
2008/04/20(日) 12:28:21ID:???global $con;
$con = sqlite_open("DB/database");
}
0677nobodyさん
2008/04/20(日) 12:29:03ID:???どのような原因って、エラーくらいちゃんと読もうな。
あと検索ってことも知ってるか?
そのエラー文をそのままググったらええのに。
0679nobodyさん
2008/04/20(日) 12:39:54ID:???dbAccessとdbCloseの両方でglobal指定をしなければいけなかったのですね。
ありがとうございました。
0680nobodyさん
2008/04/20(日) 13:03:57ID:sof1Taefあてはまるものすべてを置換するんじゃなく、一番初めにマッチしたものだけを置換したいんです。
どういう関数を使えばいいのでしょうか?
0681nobodyさん
2008/04/20(日) 13:10:28ID:???limitに1を渡す。
0683nobodyさん
2008/04/20(日) 14:30:32ID:???それぞれの文字コード中に存在しない文字に変換しようというなら妙な話だけど、
�Dなどの小文字のローマ数字は、EUC(JIS X 0213)でも存在している。
nkfやブラウザでは問題無く相互変換出来るしね。
それらを前提として、phpでは変換出来ないの?というのが質問の主旨だろ。
回答としては、現状はmbstringでは未対応のようなので、
手動でやるかnkfなどを使って変換。
文字化け=当然発生するものだから仕方無いと思考停止するのは良くないね。
0685671
2008/04/20(日) 17:12:35ID:???<?php
// ソースは UTF-8 で記述
header('Content-Type: text/plain; charset=EUC-JP');
echo "<td>\xFC\xF5</td>\n";
echo '<td>' . mb_convert_encoding('�D', 'eucJP-win', 'UTF-8') . "</td>\n";
?>
同じ表示が2行続くことを期待するのは別におかしくないと思いますよ。
0686nobodyさん
2008/04/20(日) 19:45:50ID:QNOTdt2p0687663
2008/04/21(月) 10:29:11ID:???ありがとうございます。
最近、PHPを学習して会社のサイトをPHP化しているのですが、気が付くと
セッション変数に頼りすぎてて心配になってました。
0688nobodyさん
2008/04/21(月) 23:07:39ID:e+YqWj3Yphpに、Cの同じファイルからしか呼び出せなくなる
static関数の機能はあるでしょうか。
あるなら、どのように記述したらいいのでしょうか。
0689nobodyさん
2008/04/21(月) 23:19:09ID:???クラスのメソッドってことならあるけど、関数はグローバルになってしまう。
関数内で制御したらそれっぽくできなくもない。
0690nobodyさん
2008/04/22(火) 00:15:18ID:1qEh3co+クッキーなしで、アドレス部分に表示もしないで
セッション回したいのです。
0691nobodyさん
2008/04/22(火) 03:31:03ID:???0693nobodyさん
2008/04/23(水) 01:27:04ID:???0694nobodyさん
2008/04/23(水) 05:50:16ID:???ttp://が含まれた場合オートリンクする形に変えたいのですが
どのようにすればいいでしょうか?
0695nobodyさん
2008/04/23(水) 07:10:56ID:???0696nobodyさん
2008/04/23(水) 09:11:55ID:???すいません、その定義関数の中身はこちらです。
0697nobodyさん
2008/04/23(水) 09:48:03ID:???↓
h?ttps?
0698nobodyさん
2008/04/23(水) 09:49:48ID:???検索してもいまいち核心がでてこないといいますか・・・・・・・
これphpのコマンドですよね?
0699nobodyさん
2008/04/23(水) 10:00:50ID:???教えていただいたやり方とh付け足す方法でやりたい事は出来ております。
0700nobodyさん
2008/04/23(水) 10:57:40ID:???「正規表現」で調べてみ
0701nobodyさん
2008/04/23(水) 13:20:17ID:???http → hhttp
ftp → hftp
news → 略
これが「やりたい事」なのか冷静に考えてみよう。
0702nobodyさん
2008/04/23(水) 14:27:12ID:???ありがとうございます、調べてみます。
>>701
そうだった・・・・全種類にh付くんですよねこのままじゃ。
この形式による動作の分類は正規表現を学べは問題なくできることなんでしょうか?
0703nobodyさん
2008/04/23(水) 14:44:21ID:???もしかしてこれでおけでしょうか?
他のリンクをしないとすると。
0704nobodyさん
2008/04/23(水) 15:02:27ID:???(h?ttps?|ftp|news) → h?(ttps?) // h? をカッコから出す
にすればいいと思うよ。
PHP や正規表現と無関係な話になるけど、ttp でアドレスを貼った人は
勝手に http で貼ったのと同じ結果に書き換えられたらどう思うんだろうね。
0705nobodyさん
2008/04/23(水) 15:03:56ID:???URLとして有効だったらあとは ttp:// だけで直接比較すればいいだろう
0706nobodyさん
2008/04/23(水) 15:18:54ID:???やはりそうでしたか、本当に助かりました。
うちの掲示板は広告に対する禁止ワードの効果がほとんどなかったので
httpを禁止ワードにしてリンクはttpで書き込んでもらうようにしたら1件も広告つかなくなりました。
なので今まで基本コピペで飛んで貰うような状況だったのですが
今回自動リンク出来たら訪問者も楽だろうと言う事で質問してみました。
訪問者がリンク張りたくないものに関してはまた規約に赤で方法を明記したいと思います。
0707nobodyさん
2008/04/23(水) 17:35:33ID:???と並べるのとどっちがいいんだろ。
0708nobodyさん
2008/04/23(水) 19:40:21ID:???ベタというならswitch($var) case 'http':とか。
0709nobodyさん
2008/04/24(木) 23:09:38ID:???これをforeeachにするにはどうすればいいんでしょうか。。。
0710nobodyさん
2008/04/25(金) 00:03:45ID:???0711nobodyさん
2008/04/25(金) 08:42:31ID:???$array_address=(
'google.com',
'yahoo.com'
);
foreach($array_address as $address){
$ip=gethostbynamel($address);
echo "<a href=http://{$ip}>{$ip}</a>";
}
0712nobodyさん
2008/04/25(金) 08:56:07ID:???0713nobodyさん
2008/04/25(金) 10:37:24ID:???こういうことじゃね?
$ip = gethostbynamel($address);
$string = '<a href="http://'. $ip .'">'. $ip .'</a>';
$chars = preg_split('//', $string, -1, PREG_SPLIT_NO_EMPTY);
foreach($chars as $char) {
$result[] = $char;
}
echo implode('', $result);
0714nobodyさん
2008/04/25(金) 12:02:35ID:???0715nobodyさん
2008/04/25(金) 12:11:17ID:???0718nobodyさん
2008/04/25(金) 12:29:05ID:???$time=10:00;
この$timeを午前か午後か(am,pm)判別する関数はありますでしょうか?
0720nobodyさん
2008/04/25(金) 12:38:17ID:???0721nobodyさん
2008/04/25(金) 12:46:38ID:???<?php
$time = '10:00';
echo ampm($time);
function ampm($ntime){
if($ntime >= '12:00'){
return 'PM';
}else{
return 'AM';
}
}
?>
0724nobodyさん
2008/04/25(金) 14:41:01ID:???echo date('A', strtotime('10:00'));
0725nobodyさん
2008/04/26(土) 00:22:55ID:???defineしていない定数が使われた場合、
配列の値が入っていないインデックスを参照した場合に、
教えてくれるようにしたいです。
ググってerror_reportingはE_ALLのみにしたんですが、
それではダメでした。
0726nobodyさん
2008/04/26(土) 03:39:59ID:???0727nobodyさん
2008/04/26(土) 14:02:37ID:???ttp://search.net-newbie.com/php/function.gethostbynamel.html
>array gethostbynamel ( string hostname )
>hostnameで指定したインターネットホストを 検索して得られた IP アドレスのリストを返します。 もし hostname が解決できなかった場合は FALSE を返します。
このl(ist)ってのは配列ではないんですかね。。
>>710
>>1
自分でもよくわからないんです^^;
>>711
ありがとうございます!
なるほどforeachはこう使うんですね!
>>713
ありがとうございます!
preg
implode
がわからないので調べてきます!
0728nobodyさん
2008/04/26(土) 14:36:37ID:???ここは質問スレだが分からないことを開き直る勘違い野郎ならお断りだ。
0730nobodyさん
2008/04/26(土) 17:09:26ID:???> string gethostbyname ( string hostname )
> array gethostbynamel ( string hostname )
関数名の l は list の略だから戻ってくるのは配列っすよね、じゃなくて
array (または FALSE) を返しますよと書かれてるから、戻り値が配列。
こんな感じにしたいのかな。
<?php
$hosts = array('yahoo.com', 'google.com', 'example.com');
echo "<dl>\n";
foreach ($hosts as $host) {
$ip_list = gethostbynamel($host);
echo "<dt>$host</dt>\n";
if ($ip_list) {
foreach ($ip_list as $ip) {
echo "<dd><a href=\"http://$ip/\">$ip</a></dd>\n";
}
} else {
echo "<dd>unresolved.</dd>\n";
}
}
echo "</dl>\n";
?>
0731nobodyさん
2008/04/26(土) 17:35:07ID:???すみません><
>>730
ああようやく理解することができました><
どうもありがとうございます。
foreachで配列の中身をすべてぶちまける
ということがやりたかったんです。
$ip0 = $ip_list[0];
$ip1 = $ip_list[1];
みたいなことなんですね、asって。
お世話になりました><
0732nobodyさん
2008/04/26(土) 18:19:33ID:???純粋な質問なんだが,マニュアルのforeachのページ見ないのは何故だったの?存在しらなかった?難しくて理解できなかった?
0733nobodyさん
2008/04/26(土) 18:47:40ID:???0735nobodyさん
2008/04/27(日) 05:40:25ID:???0736nobodyさん
2008/04/27(日) 06:13:37ID:???$time = '9:00';
とかで試せばわかると思うけど何も切り捨てられてないよ。
というか、文字列。
0737nobodyさん
2008/04/27(日) 19:33:14ID:???http://loglog.jp/~php/tt/tt4.php
のサイトに書かれている
>次に書き込むのですが、fgetsで読み込んだ時にポインタが動いてファイルの最後に行っているので、ポインタを先頭に引き戻してから、書き込みます。
>ポインタを戻すのはfseek() 書き込みはfputs()です。追記:rewind($fp)の方がいいかも...
>
>fseek($fp, 0);
>fputs($fp, $count);
のポインタを先頭に戻すという意味がわかりません。
ためしに削ってみると、カウンターが凄い勢いで増えていくので重要な機能なのは分かるのですが・・・
0738nobodyさん
2008/04/27(日) 21:18:36ID:???0739nobodyさん
2008/04/27(日) 21:19:26ID:???レコードの針とかCDの走査点みたいのを想像すればいい。
凄い勢いで増えていくってのは、1→12→123→1234みたいな感じ?カオスだなw
0740nobodyさん
2008/04/27(日) 22:15:43ID:???ポインタですか
勉強になりました。ありがとうございました
>>739
そうなんです。
カオスです
0741nobodyさん
2008/04/28(月) 05:14:49ID:???増え方見てりゃなんとなく分かりそうなもんだけどな
0744nobodyさん
2008/04/28(月) 16:46:43ID:???「ID、値段」の並んだデータファイルから
$ar[$id] = $price;
でどんどん取り込んでいって、
if ($ar[$data] == "") {
echo "$dataは存在しません。\n";
どうのこうの
}
って常用してる…
0745nobodyさん
2008/04/28(月) 17:04:27ID:???csvファイルの5行目から20行目までを取得するにはどうすればよいのでしょうか?
$test = fopen("hoge.csv","r");
for($i=5;$i<20;$i++){
$row = $test[$i];
}
この方法ではうまくいかないです・・・
0746nobodyさん
2008/04/28(月) 17:20:40ID:???残らないのでは?
0747nobodyさん
2008/04/28(月) 17:42:10ID:???こっち使うとか。
http://www.php.net/manual/ja/function.file.php
fopen() は例で言えば $test とファイルを結びつけて、これから読み書きしたり
ファイルポインタを進めたり戻したりする操作を可能にする「準備」の担当さん。
0748nobodyさん
2008/04/28(月) 17:56:15ID:???ご返答ありがとうございます
$test = file("hoge.csv");
for($i=5;$i<20;$i++){
$row = $test[$i];
}
これではうまく行きませんでした
for文で行数を指定するやり方は間違っているのでしょうか?
0749nobodyさん
2008/04/28(月) 18:04:09ID:???>>746の意味をよく考えて、せめて
$row .= $test[$i];
にしてみるとか、もう少し考えてもいいと思うんですよ。
$row を各行=要素な配列として扱いたいのならまた別になるけど。
0750nobodyさん
2008/04/30(水) 11:54:01ID:???フォームから入力された月が一致するものを"可能"から"予約済み"に
上書きするスクリプトです。
$file = fopen("test.csv","r");
$file_bak = fopen("test.csv","w");
while ($data = fgetcsv($file,1024,",")) {
if($data[0]==$mon){
$data[1]="予約済み";
$rowc = implode(",", $data);
fputs ($file_bak, $rowc . "\n");
}
}
fclose($file_bak);
fclose($file);
フォームから入力するとデータがまっさら(0バイト)になってしまいます。
0751nobodyさん
2008/04/30(水) 11:59:58ID:???■ このスレッドは過去ログ倉庫に格納されています