くだすれ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/
0002nobodyさん
2007/10/25(木) 16:05:30ID:???PHPプロ!PHP講座
ttp://www.phppro.jp/school/phpschool/
では、ドゾー
0003nobodyさん
2007/10/26(金) 01:14:43ID:???ほかに無料Webスペースで使えるスクリプト言語が少ないっていう程度
Perlよりわかりやすい言語っていう程度
変な言語仕様だ
即死回避
0004nobodyさん
2007/10/26(金) 01:15:22ID:???0005nobodyさん
2007/10/27(土) 00:52:57ID:???0006nobodyさん
2007/10/29(月) 21:43:11ID:???function hoge(){
$a = array("X", "Y");
return($a);
}
戻り値の 配列の要素にアクセスする場合に、戻り値を一旦変数に入れるのではなく直接参照することは出来ませんでしょうか。
$r = hoge();
print($r[0]);
hoge()[0] //<-- こんなようなこと出来ない?
0007nobodyさん
2007/10/29(月) 22:06:52ID:???0008nobodyさん
2007/10/29(月) 22:51:03ID:???0009nobodyさん
2007/10/29(月) 23:26:14ID:???0010nobodyさん
2007/10/30(火) 01:25:10ID:???0011nobodyさん
2007/10/31(水) 06:13:37ID:???Submitボタンを押すと入力した内容が含まれたtxtファイルのダウンロードが始まる
というようなサイトを作りたいのですがphpで可能ですか?
当り前っちゃ当り前なのかもですがprint関数で試してもファイルを保存ではなく
中身がブラウザに表示されてしまいそれを手動で保存してもらわないといけないので
そこをなんとかしたいです。
0012nobodyさん
2007/10/31(水) 06:35:32ID:???http://jp2.php.net/header
0014nobodyさん
2007/11/01(木) 18:50:02ID:???画像の左右5pxに黒い背景をつけたいのですが
どのようにすればいいのでしょうか?
黒の画像と合成してみましたが画像の端が消えてしまいました。
0015nobodyさん
2007/11/01(木) 19:12:21ID:???0016nobodyさん
2007/11/02(金) 12:05:48ID:???指定したタグをそのまま残して他はhtmlspecialcharsみたいに
そのまま表示をしたい。
そんな関数ある?
0018nobodyさん
2007/11/03(土) 11:41:40ID:???例えば「☆」だと化けませんが「☆あ」だと「?#63908;」みたいに化けます。
なぜですか。
0019nobodyさん
2007/11/03(土) 13:38:29ID:???0020nobodyさん
2007/11/03(土) 16:38:34ID:GrGF3a3n0021nobodyさん
2007/11/03(土) 18:39:13ID:???gattai(Human ore, Human anata) {
return ore.gattai(anata);
}
みたいな?
こういうことやるためには
HumanクラスにgetTypeメソッド
public function getType() {
return "Human";
}
を実装
function gattai($ore, $anata) {
if(is_Human($ore) && is_Human($anata)) {
return $ore->gattai($anata);
} else {
throw Exception();
}
}
function is_Human($human) {
return $human->getType() == "Human" ? true : false;
}
とでもしないと駄目なんかね。
0022nobodyさん
2007/11/03(土) 18:51:02ID:EkQ97k6rメールフォームを作ったんですが、なぜか入力確認画面の表示のところでparser errorが出てしまいます。
# エラーが出ているところ
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
# それより上の部分
function check_html(){
global $homeurl,$title;
if(NAME_FLG){
$name_chk = MARK;
}
if(EMAIL_FLG){
$email_chk = MARK;
}
if(COMMENT_FLG){
$comment_chk = MARK;
}
if($_POST['copy'] == "on"){
$copy_flg = "E-mailで受信する";
}else{
$copy_flg = "E-mailで受信しない";
}
?>
<?php echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
以上ですよろしくお願いします。
0024nobodyさん
2007/11/03(土) 18:55:29ID:???0025nobodyさん
2007/11/03(土) 18:58:57ID:UiuKYuS+デザインとロジックを分けて作ってあるのですが
デザインのhtmlファイル内の各所に
{rval hr} とか index.php?{rval param} のように
{rval --} とあります。
htmlファイル内にphpを埋め込む際は下記のような記述が基本だと思っていたのですが、くくられていなかったりaltタグの中に入っていたりします。これはどういうことでしょうか?
<?php
?>
0026nobodyさん
2007/11/03(土) 19:05:47ID:???まぁ自力でも置換できるけど
0027nobodyさん
2007/11/03(土) 19:06:47ID:EzkHevL1【PHP】下らねぇ質問はここに書き込みやがれ 58 立ててくる。
0028nobodyさん
2007/11/03(土) 19:11:31ID:???0029nobodyさん
2007/11/03(土) 19:15:50ID:???「下らねぇ〜」がない間、ここに居候させてもらってた皆さんは移動。
【PHP】下らねぇ質問はここに書き込みやがれ 58
http://pc11.2ch.net/test/read.cgi/php/1194084457/
0030nobodyさん
2007/11/03(土) 19:18:03ID:???まったく同じように機能するわけじゃないけどね
http://jp2.php.net/language.oop5.typehinting
0032超初心者
2007/11/05(月) 18:43:22ID:s8UgZp9yカウンターを造るところで一つ疑問点が
<?php
$fp = fopen("count.txt", "r+");
$iCount = fgets($fp, 64);
flock($fp, 2);
fseek($fp, 0);
$iCount++;
fputs($fp, $iCount);
fclose($fp);
print $iCount;
?>
だとカウントがあがらない
$iCount++;を$iCount = $iCount + 1;にするとカウントがあがります。
$iCount++;が効かないのかと思いましたが
違うスクリプトで
<?php
$filename = "count.dat";
$file = fopen($filename, "r+");
flock($file,2);
$count = fread($file, filesize($filename));
$count++;
print "$count";
rewind($file);
fwrite($file, $count);
flock($file,3);
fclose($file);
?>
これだとカウントが上がります
どなたか説明していただけないでしょうか
0034nobodyさん
2007/11/05(月) 18:57:07ID:???$iCount++; の動作がおかしいと思ったら、その前後で変数を調べてみればいい
おそらく $iCount に余計なスペースが含まれているのが原因
$i = "1 "; の場合、$i++ ではカウントアップしないが、$i = $i+1; では増加する
あと、flockのタイミングに問題があるのでファイルロックについても一般的なお勉強が必要と思う
0035超初心者
2007/11/05(月) 19:13:14ID:Sif87GT6やっぱり家のは上がらないです。
0036nobodyさん
2007/11/05(月) 19:14:52ID:???0037nobodyさん
2007/11/05(月) 19:18:07ID:???0038nobodyさん
2007/11/05(月) 19:21:01ID:???原因は>>34と似たようなもんだったけど。
同じソースのはずなのにどこの違いで
みんなの結果が違うのかが気になる。
0039nobodyさん
2007/11/05(月) 19:39:54ID:???0041超初心者
2007/11/06(火) 16:36:17ID:blXO/asx<?php
$fp = fopen("count.txt", "r+");
$iCount = fgets($fp, 64);
flock($fp, 2);
fseek($fp, 0);
$iCount++;
fputs($fp, $iCount);
fclose($fp);
print $iCount;
?>
count.txtを変数化しました。$db
そして$iCount=fgets($fp,filesize($db));
にしたらカウントが上がりました。
php5です
0042nobodyさん
2007/11/06(火) 17:01:40ID:???0043nobodyさん
2007/11/06(火) 18:33:16ID:???34氏と40氏のレスが全てだと思う
インクリメント演算子は数値型(intその他)の他に文字型(string)に対しても
有効なんだけど、NULL、boolean以外にコントロールコードを含む文字列に
対しては無効。
だから、PHPスクリプトに読ませるファイルのデータにも注意しないとね。
例えば初期値0を書き込んだファイルの16進ダンプを取った時に
30
のみ書かれている場合は良いけど、その後ろにCR+LFやLFが付いている
30 0d 0a 又は 30 0a
などのデータは余分なコントロールコードを排除しないかぎり
そのままではインクリメント演算子で加算はできないよ。
0044nobodyさん
2007/11/07(水) 12:10:07ID:???(またはその逆のケース)って、どういう場合が考えられますか?
0045nobodyさん
2007/11/09(金) 18:37:25ID:/x/z4zSE200711 2007101 などを
20070101 20071001 に
変換する関数とかってないでしょうか?
ない場合どうやって分離するか教えてください。
0046nobodyさん
2007/11/09(金) 18:40:13ID:/x/z4zSE0047nobodyさん
2007/11/09(金) 18:41:57ID:???0048nobodyさん
2007/11/09(金) 18:49:12ID:???2007年1月10日がきたら「2007110」になるし
2007年10月1日がきたら「2007101」になるし
2007年10月10日がきたら「20071010」になるし
0049nobodyさん
2007/11/09(金) 18:51:54ID:???例えば2007121が
20071201、20071021のどちらかを見分けられないから無理ぽ
取得する時にそのようにするしかないかと
0050nobodyさん
2007/11/09(金) 18:53:49ID:???0052nobodyさん
2007/11/10(土) 00:26:51ID:???PHP5.24では使えないのでしょうか。
4.4.1のサーバーで使えてたファイルを
PHP5.24にアップしたら、エラーがでます。
メールフォームで全角で入力された文字を、
次の確認画面で、半角で表示させたいのですが、
もしmb_convert_kanaが使えないなら、他の方法はありますでしょうか。。。
0053nobodyさん
2007/11/10(土) 01:54:48ID:???mb_convert_kanaはわからんけど、
preg_replaceでがんばってみては。
http://jp2.php.net/preg_replace
もしくは全角が入力されてたらエラーページにいくようにしたりとか。
携帯向けってわけじゃないなら、JavaScriptあたりで、全角のチェックいれてみたり。
携帯だったら、inputタグにistyleとか要素突っ込めば、IMEのデフォルトを半角に出来たりしたきがする。
0054nobodyさん
2007/11/10(土) 02:25:51ID:???使えるよ、変換できるよ
そのサーバーでmbstringが有効になっていて、かつ、mb_convert_kanaに
適切なオプションを引数として渡して駄目ならわからん
0055nobodyさん
2007/11/10(土) 09:18:23ID:???>>54が使えるっていってるし、とりあえず、
phpinfo();
あたりでmbstringが有効になってるか確認することが必要なのかね。
0056nobodyさん
2007/11/10(土) 10:43:48ID:???0057nobodyさん
2007/11/10(土) 11:31:39ID:???phpinfo();でみたところ、
mbstriongが有効になってませんでしたorz
preg_replace、やってみましたが、どう使えばいいのか・・・(汗)。
たとえば身長を全角で入れて、その数字をわり算したいのですが、
全角だとそのわり算部分でエラーがでるので、
半角に事前に変換した上で、わり算に持っていきたいのです。
無難にjavaスクリプトでエラーチェックしたほうがよいのかもですね。。。
0058nobodyさん
2007/11/10(土) 12:02:20ID:kqDw9Pxy0059nobodyさん
2007/11/11(日) 00:35:28ID:???おそくなっちゃったけど
たとえば、全角が表示されてたときにエラーページに行くためのフラグを立てるだけだったら、
if( preg_match("/^[0-9]*$/", $_POST["sincho"]) ){
//半角数字で記述されてた場合
}else{
//それ以外のまちがった記述の場合
}
とかにするとかかな。
preg_replaceで置換する場合は
$str = preg_replace("/A/", "A", $_POST["shincho"]);
とかやると、全角Aで書かれた文字が半角Aになる。
変換表を作って変換させなきゃいけなくてうざいけど。
そして、もっと効率のいい方法があるきがするけど、思いつかなかった。
0060nobodyさん
2007/11/12(月) 00:29:44ID:jDp7PoYPPHPをやろうと思いどうすればできるのかを
調べたのですがどうすればPHPを使えるのかがよくわかりません・・・
apacheを使ってやろうとしているのですが
あるサイトでhttpd.confの中にある文を書き加えるというのがあり
やったのですが上書き保存しようとすると
「フォルダを作成できません。パスおよびファイル名が正しいか
確認してください」と出てきます・・・
それとapacheをstartさせてもerrorと出てきてしまい
どうすることもできません。
わかる方教えてください。
0061nobodyさん
2007/11/12(月) 00:48:04ID:???0062nobodyさん
2007/11/12(月) 02:37:46ID:hPj5yJAtお返事ありがとうございます。
どこがおかしいのでしょうか・・・?
ちなみにhttpd.confの書き換えのやつは保存というか
無理矢理ぶち込んでできたんですが相変わらず
エラーと出ます・・・
というかずっとググってたんですがyahooで検索してみたら
PHPエディタというのが出てきたんですが
初心者はこっちでやったほうがいいんでしょうか
■ このスレッドは過去ログ倉庫に格納されています