【PHP】質問スレッドpart19【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/07/16 07:12ID:KvHeypq/・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
過去スレ, 関連スレ等>>2-4
抜けているものがあったら補足願います
0039nobodyさん
04/07/16 19:19ID:???0041nobodyさん
04/07/16 19:33ID:ctj/r83ywhile(($p=strpos($l,$key))!==false){
$l=substr_replace($l,'</span>', $p+strlen($key),0);
$l=substr_replace($l,'<span class="search-match">', $p,0);
}
0042nobodyさん
04/07/16 19:49ID:???知っている人なら対策コード書いてるor本体アップデートしてると思うがいちおうURL貼ります。
http://www.itmedia.co.jp/enterprise/articles/0407/16/news016.html
cronが無理な環境なら、timeで、たとえば0時の1時間以内に誰かがアクセスした時に起動させて、
それ以降はフラグ立てて起動しないようにし0時を過ぎたらフラグを消すとか・・・
指定時間内に確実にアクセスする必要があるけどね。
0044nobodyさん
04/07/16 20:47ID:???0時でいいなら、最終のバックアップ日付を記録しとけばいいだけだと思うけど。
それ見りゃ処理すべきかどうか判断できて、指定時間がどうのとか莫迦な制限もない
0045nobodyさん
04/07/16 20:56ID:???設計やり直せ
すみません。それはどうやってやるんですか?
0047nobodyさん
04/07/16 21:42ID:???(例えば)トップページ等にアクセスされた時に、
以前バックアップされた日時を確認
↓
その日時から(例えば)1日経過していなかったら終了
↓
バックアップ処理
↓
今の日時を「以前バックアップした日時」として記録
じゃないのか?
0048Imo ◆.jC7ANgFY.
04/07/16 21:46ID:???$delfile = $backupdir . (intval(time() / 24 / 3600) - 15) . '.dat';
file_exists($backupfile) or copy($datafile, $backupfile);
file_exists($delfile) and unlink($delfile);
この4行で毎朝9時ごろにバックアップできるぞ!
0049nobodyさん
04/07/16 22:06ID:mEB25GsKgcc: sapi/cli/php_cli.o: No such file or directory
gcc: sapi/cli/getopt.o: No such file or directory
*** Error code 1
がでてmakeできない
よくわからんから元の4.3.6に戻した
0050カポコン
04/07/17 02:48ID:???HTML化致しました。
005117
04/07/17 12:04ID:???$_REQUEST = array_map('htmlspecialchars',$_REQUEST);
すると「〜」が、?になるのですが仕様の変更ですか?
PHP4の時でもなったいたのだろうか・・記憶にないのですが。
005251
04/07/17 12:05ID:???0054nobodyさん
04/07/17 16:18ID:cAUyli63$mail_data ←この中に、メールのヘッダから本文までごっそり入ってるんですが、
そのなかから、メールアドレスだけ抜き出すにはどうしたら良いでしょうか?
0055nobodyさん
04/07/17 16:36ID:CrUOMyEi0056nobodyさん
04/07/17 16:42ID:???抜き出すための特徴は無いのか?
通常のメールヘッダなら、
To: 、Date: 、From: 、Subject: 、Content-Type: ..が\r\nで区切られているから
To や From の行を抜き出せばいいだけじゃないのか?
それ以外なら >>55の言っているように正規表現で抜き出すしかないぞ?
perlメモのページにメールの正規表現が載ってるがチビるよ?いやまじで。
0057nobodyさん
04/07/17 17:05ID:???From:だけを抜き出そうと思っています。
正規表現でやってみます。
どうもでした。
005854
04/07/17 18:30ID:cAUyli63$grep="/^From:(.*)$/";
print_r(PReg_Grep($grep, $mail_data));
こんなことを、試してみましたがうまく抜き出せません。
PReg_Grep関数じゃだめなんでしょうか?
0059nobodyさん
04/07/17 19:11ID:???やり方は合ってるよ。preg_grepで問題なし。
試しに手元のメールデータを突っ込んでみたが問題無く動く。
それで動かないなら、$mail_dataが想定と違うんじゃないかな?
$mail_dataを一行ずつ表示して確認してみたら?
006058
04/07/17 19:39ID:cAUyli63ごっそり、連なってる、データ郡からとってきてくれるのかと思いました。
StrTokでばらばらにしてやってみます。
0061nobodyさん
04/07/18 11:12ID:yQjoCnlAひっかかるはずの検索ワードを打っても絶対に0件ヒットしました
としか出てくれません。
この場合、どこかの設定がおかしいのでしょうか?
以下のサイトを隅から隅まで見てみましたがそれらしき情報はありませんでした。
http://www10.plala.or.jp/miyazawa/namazu/
http://homeserver-streaming.com/Trouble/namazu/
0063nobodyさん
04/07/18 11:53ID:FJ1yfCK5include 'http://192.168.0.1/test.php?no=001';
?>
とやっても no=001 の部分がどうしても反映されません。
普通にブラウザでhttp://192.168.0.1/test.php?no=001にアクセスすると反映されています。
includeで引数を渡す方法ってないですか?
マニュアルにはこれで出来るって書いてあるのだけれども。
0065nobodyさん
04/07/18 13:43ID:???俺はできたよ(当方Apache/2.0.48 (Win32) PHP/4.3.4)
>>64の言うとおり問題はOSとPHPのバージョンだと思う。
0067 ◆JirmzAivjs
04/07/18 14:32ID:Br0Ka4RM<?php
$var_no = "";
import_request_variables("GP", "var_");
$inc = "http://192.168.0.1/test.php?no=" . $var_no;
include $inc;
?>
とかやってもだめ?
ASPに対してPHPでSOCKETを使用して接続したいのですが、
どうしてもSOCKETで接続が出来ません。
ASPのSESSIONがクッキーで発行されているのがネックなんですが、どうにかする方法はないのでしょうか?
0068nobodyさん
04/07/18 16:24ID:???ASPから発行されたクッキーをPHPから渡してあげればいいのでは?
別の言い方をすると、セッションが継続する間中 ずっとPHPで面倒を見るってことだけど。
0069nobodyさん
04/07/18 17:31ID:???表示させるにはどうすればよいですか?
ttp://www.tkool.net/index.php
0070nobodyさん
04/07/18 17:37ID:???0072nobodyさん
04/07/18 18:16ID:ajil2/nNソースをコンパイルしてインストールしたんですが
$ php -v
の結果は4.3.8なのにサーバ上でphpinfo()を表示させると4.3.6のままです
どこがダメなんでしょうか
0073nobodyさん
04/07/18 18:17ID:???場合、絶対パスでアクセスされてしまう可能性があると想うのですが、
みなさんはどうされていますか?。
拡張子の変更などをしても内容のデータがそのままであれば見るのは
容易だと想うのです。
画像データを暗号化し画像を表示する時にPHP経由で複合化して
表示するか、またはSQLなどに放り込んでしまうか、サーバーに拡張子
によるアクセス拒否が出来るならそれを使う等しか思い付かないのです
が他に良い方法はあるのでしょうか?。
0076nobodyさん
04/07/18 18:51ID:ajil2/nNスマソ
apacheは2.0.49
$ ./configure \
--host=i386-redhat-linux --build=i386-redhat-linux --target=i386-redhat-linux-gnu \
--program-prefix= --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin \
--sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include \
--libdir=/usr/lib --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/usr/com \
--mandir=/usr/share/man --infodir=/usr/share/info --cache-file=../config.cache \
--with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d \
--enable-force-cgi-redirect --disable-debug --enable-pic --disable-rpath \
--enable-inline-optimization --with-bz2 --with-db4=/usr --with-curl \
--with-exec-dir=/usr/bin --with-freetype-dir=/usr --with-png-dir=/usr \
--with-gd --enable-gd-native-ttf --without-gdbm --with-gettext \
--with-ncurses --with-gmp --with-iconv --with-jpeg-dir=/usr \
--with-openssl --with-png --with-pspell --with-regex=system \
--with-xml --with-expat-dir=/usr --with-dom=shared,/usr
0077nobodyさん
04/07/18 18:52ID:ajil2/nN--with-pcre-regex=/usr --with-zlib --with-layout=GNU --enable-bcmath \
--enable-exif --enable-ftp --enable-magic-quotes --enable-safe-mode \
--enable-sockets --enable-sysvsem --enable-sysvshm \
--enable-discard-path --enable-track-vars --enable-trans-sid \
--enable-yp --enable-wddx --without-oci8 --with-pear=/usr/share/pear \
--with-imap=shared --with-imap-ssl --with-kerberos --with-ldap=shared \
--with-mysql=shared,/usr --with-pgsql=shared --enable-ucd-snmp-hack \
--with-unixODBC=shared --enable-memory-limit --enable-bcmath \
--enable-shmop --enable-calendar --enable-dbx --enable-dio \
--enable-mcal --enable-mbstring --enable-mbstr-enc-trans \
--enable-mbregex --with-apxs2=/usr/sbin/apxs \
$ make
# make install
でhttpd.confに
LoadModule php4_module modules/libphp4.so
を加えてapacheを再起動したら
[Sun Jul 18 18:44:53 2004] [warn] module php4_module is already loaded, skipping
と怒られた。それ以前にLoadModule php4_module modules/libphp4.soやAddType application/x-httpd-php .php
がhttpd.confに書いてないんだけどなんでかな
007873
04/07/18 19:00ID:???今は自前鯖なんで、httpd.confに書いてたり^^;。
ゴメンヨ・・・。
配布とか考えた時に.htaccessが使えないレンタル鯖とかも
あると想われるので何か良い手だてはないものかと・・・。
0079nobodyさん
04/07/18 19:44ID:Sl8hc8IDその際、register_globalをOnにしときなされ。
0084nobodyさん
04/07/18 21:39ID:???<select name="asdasd[]" size="5" multiple="multiple">
<option value="a">あ</option>
<option value="b">い</option>
<option value="c">う</option>
<option value="d">え</option>
<option value="r">お</option>
<option value="f">か</option>
<option value="g">き</option>
<option value="h">く</option>
</select>
こういうフォームをつくって、これをGETメソッドで送り、
parse_str 関数で処理したのですが、
配列 asdasd[] の個数が、選択した要素の数*2になってしまいます。
つまり、2つ選択して送るとcount($asdasd) が4になるということです。
どうしてこうなるんですか?
008672
04/07/18 22:22ID:???前のバージョンをアンインストールしていなかったので
# rpm -e php
で関連パッケージを削除してmake install し直してphp.iniをphp.ini_dist
をコピーしてhttpdを再起動しようとしたら今度は
Syntax error on line 199 of /etc/httpd/conf/httpd.conf:
Cannot load /etc/httpd/modules/libphp4.so into server: /etc/httpd/modules/libphp4.so: cannot open shared object file: No such file or directory
と怒られてしまいました
libphp4.soはどこ行っちゃったんでしょうか
0090nobodyさん
04/07/19 00:27ID:eJnEJcBxだれかおしえてください
0091nobodyさん
04/07/19 00:52ID:qsqOem7W実現可能でしょうか?どこか参考になるサイト等ありましたらお教えください。
0092nobodyさん
04/07/19 09:07ID:???掲示板をつくり、1つの記事を削除する場合は
その記事意外を再度上書きすればいいんだよな?
0094nobodyさん
04/07/19 10:26ID:zI9w6JFi$a = array('田中太郎<>12<>りんご<>','山田太郎<>16<>なし<>','吉田太郎<>12<>すいか<>');
のような配列を<>で分割した2番目の要素(12,16,12)でソートするにはどうすればいいんですか?
ソート後は
山田太郎:16才:好物なし
田中太郎:12才:好物りんご
吉田太郎:12才:好物すいか
のように2番目の要素(12,16,12)以外も表示したいんです。
0095nobodyさん
04/07/19 11:04ID:???ttp://www.yumenara.com/pwp/
のサイトを読んで
現在の時刻を表示させる<?php echo date("n月j日") ?>を入れてみたんですが
何故か文字化けして「79」としか表示されません
どうすればいいんでしょう?
PHPバージョンは4.3.8でサーバーはApache2.0.49
OSはWinXPです
ちなみにp2というPHPで作られた2chビュアーは文字化けせずに正常に表示されます
009695
04/07/19 11:04ID:JjQNbyQZすいません
0097nobodyさん
04/07/19 11:06ID:???function myCompare($x, $y) {
if ($x[1] == $y[1]) return 0;
return ($x[1] < $y[1]) ? -1 : 1;
}
function myExplode($z) {
return explode('<>', $z);
}
$a = array('田中太郎<>12<>りんご<>','山田太郎<>16<>なし<>','吉田太郎<>12<>すいか<>');
$b = array('name' => array(), 'year' => array(), 'favorite' => array());
foreach ($a as $str) {
list($b['name'][], $b['year'][], $b['favorite'][], ) = myExplode($str);
}
array_multisort($b['year'], $b['name'], $b['favorite']);
$c = array_map('myExplode', $a);
usort($c, 'myCompare');
var_dump($a, $b, $c);
0098nobodyさん
04/07/19 11:18ID:???文字化けって分かってるなら文字コードの設定も書かないと。
というか、書いているうちに原因に気づくんだろうけどねぇ。
http://www.php.net/manual/ja/ref.mbstring.php
0099nobodyさん
04/07/19 11:25ID:???array_multisort使うならこの方がいいかな。
$a = array('田中太郎<>12<>りんご<>','山田太郎<>16<>なし<>','吉田太郎<>12<>すいか<>');
$b = array(); // 並べ替えたい配列
$c = array(); // 並べ替えの基準にする配列
foreach ($a as $key => $value) {
$b[$key] = explode('<>', $value);
$c[$key] = $b[$key][1];
}
array_multisort($c, $b);
var_dump($b);
010095
04/07/19 11:35ID:JjQNbyQZmbstringは導入してました
php.iniの設定も色々変えてみましたが直りませんでした
全角の文字が表示されていないようなんですが…(全て全角で入力すると何も表示しませんでした)
0105nobodyさん
04/07/19 12:04ID:???文字エンコーディングの設定はどうなってるの?
ソースのそれはどうなの?
やらなきゃいけないのは正しい設定にすることで、
闇雲に変更することじゃない。
どうしたらいいのか分からない場合は>>98のEUC-JPの設定にして
ソースもEUC_JPで書くのがお勧め。
010695
04/07/19 12:19ID:???文字エンコーディングはSJISでやってます
EUC-JPはp2で設定ファイルを編集する時文字化けしたので止めました
ソースは
<HTML LANG="JA">
<HEAD>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=Shift_JIS">
<TITLE></TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" ALINK="#FF0000" VLINK="#800080">
<P>今日は<?php echo date("n月j日") ?>です。</P>
</BODY>
</HTML>
010895
04/07/19 12:38ID:???ttp://www.php.net/manual/ja/ref.mbstring.php
これのSJISユーザ用のphp.iniの設定です
0109nobodyさん
04/07/19 12:45ID:???・・・。
アンタさっきphp.iniの設定をいじったって言ってたけど
今はそのページの内容に戻ってるって事かい?
自分の環境のphp.iniのmb_string関連の部分をコピペしろよ
011090
04/07/19 12:48ID:???ダウンロードしたPHPUnit2のアーカイブにサンプルが入ってるらしい。
ttp://inagi.himitsukichi.com/~aozora/blog/
ttp://inagi.himitsukichi.com/~aozora/cgi-bin/pukiwiki/pukiwiki.php?PHPUnit2%A4%F2%BB%C8%A4%C3%A4%C6%A4%DF%A4%EB
すまね。
0111nobodyさん
04/07/19 12:48ID:???0112nobodyさん
04/07/19 13:18ID:???011394
04/07/19 13:51ID:???0114nobodyさん
04/07/19 14:07ID:???リンク「あああ」をクリックした時に、
同時に変数を代入(例えば$name="yamada"など)できないでしょうか?
0117114
04/07/19 14:23ID:???if ($main == "kikaku")
$page = "./page/kikaku/index.html"
?>
クリックしてmainがkikakuになった状態で上の文を記述していれば
<?php echo $page ?>の部分に上のファイルが開かれるんですよね?
0118114
04/07/19 14:25ID:???「./page/kikaku/index.html」とそのまま表示されますた;;
0119114
04/07/19 14:30ID:???if ($main == "kikaku")
$index = "./page/kikaku/index.html";
$page = file($index);
?>
にしたら「Array」になりました・・・
どなたか助けてください;;
0120nobodyさん
04/07/19 14:44ID:???なにがしたいか知らんが、おそらくincludeでできる
0121114
04/07/19 14:46ID:???0122114
04/07/19 14:48ID:???PHPのページの一部に他のページを貼り付けるということです
0123114
04/07/19 14:58ID:???回答してくれた方ありです!
0124nobodyさん
04/07/19 16:13ID:???0125nobodyさん
04/07/19 17:06ID:???0126nobodyさん
04/07/19 21:11ID:???ファイルアップロードで、下記のformでアップロードした場合、
どうやって、「fname」の値ってとるんでしょうか?
$_POST['fname'] でおけ?
なんかうまく取れない・・・
<form enctype="multipart/form-data" action="upfile.php" method="post">
<input type="file" name="upfile">
<input type="text" name="fname">
<input type="submit" value="upload">
</form>
0128PHP
04/07/19 21:51ID:4+OKTR+fArray[0](A0,B0,C0)
Array[1](A1,B1,C1)
Array[2](A2,B2,C2)
でBの項目でソートしたいときってどうしたらいいの?
http://www.teu.ac.jp/chiit/~dsuzuki/phpdoc/function.array-multisort.html
<?php
$list[0] = array('A2','A1','A0');
$list[1] = array('B1','B2','B0');
$list[2] = array('C0','C1','C2');
//ソート前
print("ソート前<br>\n");
for ($i=0;$i<sizeof($list);$i++) {
for ($j=0;$j<sizeof($list[$i]);$j++) {
$str = $list[$i][$j];
print("$str\n");
}
print("<br>\n");
}
array_multisort ($list[1],SORT_DESC,SORT_STRING,$list[0],$list[2]);
//ソート後
print("ソート後<br>\n");
for ($i=0;$i<sizeof($list);$i++) {
for ($j=0;$j<sizeof($list[$i]);$j++) {
$str = $list[$i][$j];
print("$str\n");
}
print("<br>\n");
}
?>
これを自分なりに変えてみ。
http://pc5.2ch.net/test/read.cgi/jisaku/1089171507/
でがんばってまつ。
0132xxx
04/07/20 01:57ID:zj8DyYfzArray ( [0] => 2004072000<>0<>xxx<>2<>0 [1] => 2004072000<>0<>index<>0<>0 )
の配列を中の[3]の配列の値でソートして、[2]の値のついたdatファイルを読み込んで表示させたいんです。
どうしたらいいか分かりません…。
どうしたらいいんでしょう?
0133nobodyさん
04/07/20 02:34ID:TlHHsRNJHTML中の一部を繰り返したいのですが、
<html>
<body>
<?php
for(i=0;i<10;i++){
?>
test<br>
<?php
}
?>
みたいに書くことってできないんですか?JSPのように。
なんかエラーになってしまったんですが。
0134133
04/07/20 02:37ID:???<?
for($i=0;$i<10;i++){
?>
だった。<?だけでいいんだね。↑は$もついてないし。
ごめん。
マジごめん。
0135xxx
04/07/20 02:58ID:zj8DyYfz<body>
<?php
for($i=0;$i<10;$i++){
print("test<br>\n");
}
?>
じゃだめなの?
http://www.mdir.org/tesss?act=0
http://www.mdir.org/tesss?act=1
>>131
の見てできんのかい(o_ _)ノ彡☆
0137xxx
04/07/20 04:10ID:zj8DyYfzいざむ(136)さん、出来ました。
ありがとうございました!!
0138nobodyさん
04/07/20 05:08ID:???ちゃんとしたスクリプトを書けばできるよ。
(134でもまちがってるだろw)
たしかPHPの処理としては、<?php ?>の間以外は
そのままechoしてるのと同じ処理だからwhileとか
分割されてもできる。
■ このスレッドは過去ログ倉庫に格納されています