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

【PHP】質問スレッドpart32【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/01/03(火) 17:18:20ID:???
PHP全般の質問スレです。
【基本ルール】
・新規質問の方は上げてください。age進行でお願いします。
・質問者は2回目以降、最初のレス番号を名前欄に入れてください。
・回答者は質問者に対して>>(アンカー)をつけてください。
・煽り・荒らしは放置。荒らしに反応した香具師も荒(ry
・解決しなくてもこたえてもらったら礼を。
【質問テンプレ】
・マニュアルを調べたか、google検索したか(調べたキーワード)
・タイトル(禁:教えてください!etc) 例:requireとinclude
・内容 例:requireとincludeはどう違うのですか?
・質問する際には環境も明記。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
【PHP マニュアル】
http://www.php.net/manual/ja/
※マニュアル上部の「search for」から検索を活用すべし(便利)。

過去スレ、関連リンク、FAQ等>>2-10辺り
0449nobodyさん2006/01/25(水) 21:22:40ID:???
くだらねー
04504402006/01/25(水) 23:49:12ID:???
ちょっと心当たりのあるphpスクリプトで

$newview = '720';//ニュー表示何時間? しない時は0
$newlogo = '<font color="#FF6699">new</font><br>'; //最新記事マークタグ

if($newview == 0 || ($newview*3600+$stmp) < $nowtim) $newlogo = "" ;
$nn.="[{$tim}] $newlogo$com<hr size=1>";//最新記事
----------
こんな感じのがあるんですが、
<font color="#FF6699">new</font> の部分を
<a href="bbs/bbs_opinion.cgi">感想掲示板</a>に入れ替えれば良さそうなんですが、
実際にどうやって取り込んでページに反映させられるのかわかりません..。
ご示唆のほどお願いします。
0451nobodyさん2006/01/25(水) 23:55:57ID:???
>>450
そりゃホントに表示の部分だけで、肝心の更新日時を取得してる部分が無いよ
04524092006/01/26(木) 03:21:42ID:???
>>412
ありがと。
早速使ってみ…と思ったのですが、
[:XXXX:]は、何パターンもあり、
preg_replace、preg_replace…と数分だけ書くと言う手もあるのかもしれませんが、
検索文字列に設定できません。

ブログで絵文字を使うような感じにしたかったのですが、
どのようにしたらいいのでしょうか。
0453nobodyさん2006/01/26(木) 04:39:17ID:AR4L/VZ9
>>448
ttp://php.s3.to/script.php
ここのカウンタを応用すれば?
0454nobodyさん2006/01/26(木) 05:13:56ID:???
>>448
JaneがURLに反応
0455nobodyさん2006/01/26(木) 05:15:39ID:???
koreaに反応したんだお
0456nobodyさん2006/01/26(木) 10:44:28ID:???
>>452
[:XXXX:]にある程度固有のルールは無いのか?英数字しか使えないとか。
$str = preg_replace('/\[:\w+?:\]/e', 'emoji($1)', $str);
みたいな感じで[:〜:]を最短マッチで関数に引き渡せばできそうな気がするんだが。
04574562006/01/26(木) 10:45:49ID:???
()付け忘れた
$str = preg_replace('/\[:(\w+?):\]/e', 'emoji($1)', $str);
0458nobodyさん2006/01/26(木) 11:16:55ID:???
掲示板のような親子関係が永遠に分岐する可能性のあるツリー表示がしたいんですが。
方法を思いつきません、どなたかアイデア・助言や分かりやすいサンプルソースのある場所を教え頂けないでしょうか。

再帰的な処理を行う方法がとんと浮かびません。
0459nobodyさん2006/01/26(木) 11:23:50ID:8dMtV3IM
複数のmp3ファイルを1つにファイルに結合してダウンロードさせたいのですが、
やった事のある人はいますか?
いろいろ探したのですが、タグ情報の読み書きしか見当たりませんでした。
mp3の前と後ろをカットして中を結合して前と後ろを付け直すとかやってみたのですが、、、

mp3ってどうすればよいのでしょう。
0460nobodyさん2006/01/26(木) 11:28:02ID:???
>>458
その手の掲示板のソースを参考にすればいいんじゃまいか

>>459
ググればいくらでも見つかるわけで。つかphpで扱うな。
0461nobodyさん2006/01/26(木) 11:29:29ID:RHnTs72C
もしも2ちゃんねるの各板に株というものがあったら
http://news19.2ch.net/test/read.cgi/news/1138239761/

実装してくれる奇特な方はいませんか?
0462nobodyさん2006/01/26(木) 14:30:13ID:8dMtV3IM
すみません。ググっても見つからないのでこちらで聞きました。
PHPでなくてもいいのですが、>>460 さんは何で扱いますか?
0463nobodyさん2006/01/26(木) 15:04:41ID:???
だからツリー型の掲示板探して中を見てみればいいのに…
0464nobodyさん2006/01/26(木) 15:13:38ID:8dMtV3IM
>459, >462です。すみません。できました。
キャッシュが残っていて結合されたファイルが鳴らなかっただけで、
単純に足せば鳴りました。
0465nobodyさん2006/01/26(木) 15:56:54ID:IB58kw5L
.htaccessのような感じに個別でCGI版PHPのmax_execution_timeの設定を
行うにはどうすればいいのでしょうか?
0466nobodyさん2006/01/26(木) 16:03:50ID:P2h/kQrX
PHP 4.4.2を使用しています
例えば
$str='aaa';
という変数があり、
$wrap='aabcdeffaaabfue';
という変数の中から$strを大小区別無し検索するには
eregi($str,$wrap)
で動作しますが、
同じように
preg_match('/'.$str.'/i',$wrap);
でも動作するのでしょうか?

0467nobodyさん2006/01/26(木) 16:06:46ID:P2h/kQrX
自己解決しました、
正常に動きました
0468nobodyさん2006/01/26(木) 16:10:57ID:???
>>461
仕様書を出せ話はそれからだ。と言うかそれ以前にスレ違い
04694582006/01/26(木) 16:17:19ID:???
>>463
私じゃありませんっ
><

ソース見ても分かりませんがね・・
分かるまでじっくり見てみようと思います
0470nobodyさん2006/01/26(木) 16:25:54ID:???
複数の子を持つツリー構造を順番に巡るだけでは・・?

まぁ、頑張ってソース嫁
0471nobodyさん2006/01/26(木) 16:27:22ID:???
>>469
掲示板だとして、一つの案だが

記事ごとにクラスを作る
個々の記事には独立した ID を振っておく
親配列、子配列をメンバ変数に持ち、直接の親、直接の子の ID が
ここに収まる
表示の起点となる ID を指定して、そこから例えば親は直接の親だけ
子はエンドレスで取得して表示

なんて風にやってみるって手はあるかな。
もっと効率のいい方法があると思うけど。
0472nobodyさん2006/01/26(木) 17:25:26ID:ZWELklYb
PHPでGETのクエリがあると特定箇所へのリンクができません。


1.php
$str = "<a name=test1></a>";

2.php
<a href="1.php#test1?mode=asdf">


仕様とかでしょうか?それとも可能?
0473nobodyさん2006/01/26(木) 17:36:14ID:???
>>472
#test1
の位置を工夫すべし
0474nobodyさん2006/01/26(木) 17:39:20ID:???
PHPのお役立ちサイトとかないですか?
初心者向けのインストールガイドとかしてくれるサイトです。。。
WIKIを使いたいんですけどよくわかんなくて困ってます…。
0475nobodyさん2006/01/26(木) 17:47:44ID:???
>>465
くだ質。

PHP_INI_ALLだから、php.iniでもini_set()でも好きなように。
0476nobodyさん2006/01/26(木) 17:48:18ID:???
>>465
set_time_limit()
0477nobodyさん2006/01/26(木) 17:49:20ID:???
>>474
・wikiを使いたい→wikiスレ
・レンタル鯖に設置したいけど方法が分からない→レンタル鯖板
・PHPのインストール方法が分からない→分からない点を書きアドバイスを求める (質問の内容によっては 自宅サーバ板)

PHPのインストールってのが何を指すのかよく分からない。

まぁ、wikiを設置したいけどやり方が分からないんだとエスパー
って事でこの板のwikiスレに行って、設置先の名前、設置するwikiの名前、それと分からないポイントを書けば誰か教えてくれるかもよ
04784722006/01/26(木) 17:50:14ID:ZWELklYb
>>473
マジサンクス。マジ俺アホス。一発で解決しました。50円あげるお^^

つ �I�I�I�I
0479nobodyさん2006/01/26(木) 17:51:47ID:???
>>478
足りない10円はどこ行ったw
0480nobodyさん2006/01/26(木) 18:11:44ID:???
PHPで簡単な登録フォームを作成しています。

名前[ ]
内容[ ]

【プレビュー】【送信】

という表示だとして、プレビューのボタンを押した時に別ウィンドウが開いて
入力した内容が確認できる。
送信のボタンを押すとそのまま送信できる。

というのを考えているのですが、プレビューも送信もどちらもsubmitボタンとした場合、
formのaction先には1つのファイルしか指定できないわけで、どうすればいいか
迷っています。(プレビューと送信完了のページは別ファイル)

説明が下手ですみませんが、何かアドバイスをいただければと思います。
0481nobodyさん2006/01/26(木) 18:14:57ID:???
>>480
Submitの名前で判断すれば良いんじゃないかな?
0482nobodyさん2006/01/26(木) 18:18:14ID:???
>>480
確認しないで送れるんだけど、それでいいの?
中身空っぽのやつとかいたずらし放題なわけだけど。
0483nobodyさん2006/01/26(木) 18:19:25ID:???
>>482
ブログとかだって確認と送信あるから良いんじゃない?
04844802006/01/26(木) 19:01:55ID:???
>>481
その「Submitの名前」というのは、例えば以下のような事ですか?

<form action="test.php" method="POST">

ソース

<input type="submit" name="preview" value="プレビュー">
<input type="submit" name="entry"value="送信">

で、test.phpでifでsubmitからのnameを判別して
プレビュー用ならpreview.phpをincludeして、送信用ならentry.phpをinculdeするような。

>>482
確認はプレビューでするので、実際は登録されていない事になります。
0485nobodyさん2006/01/26(木) 20:09:10ID:???
>>484
オレだったら、hiddenだらけの別formを用意して、
プレビューはjavascriptで上記フォームを介して行い、
送信は普通にsubmitするかな。

もちろん、javascript offの環境ではプレビューできないけどw
0486nobodyさん2006/01/26(木) 21:26:36ID:???
>>484
正解。やってみそ。
0487nobodyさん2006/01/26(木) 22:50:15ID:XYYPwXMi
PHPで0から50までの乱数を出したい場合
rand(0,50);
で0以上50以下が出力されるのはわかったのですが
srand(初期値);
のsrandの使い方がいまいちわかりません。
0から50までの乱数を出す場合はsrandの初期値はどのように
設定すればいいのでしょうか?
0488nobodyさん2006/01/26(木) 23:07:36ID:???
PHPを使ってHTMLにアクセスした際に文章をパソコン向けと携帯向けの表示振り分けを行いたいのだけど
とりあえずわかったのが、UserAgentで携帯端末情報を読み取るまではわかったが、それから先が一向に進まぬ

教えて下さい。大先生方!!
0489nobodyさん2006/01/26(木) 23:39:02ID:???
>>487
http://www.php.net/srand
> 注意: PHP 4.2.0 以降、 srand() または mt_srand() によりランダム数生成器にシードを与える必要はありません。これは、この処理が自動的に行われるためです。

つまり4.2.0以降のバージョンではsrandを書かなくていい。
ちなみに以前のバージョンでsrandを書く場合引数にはtime()などのランダムになりやすい値を与える。
つーかsrand(time())にするべし。

>>488
そこまでわかったのにどうして先に進めないのさ?
ifとかswitchとかincludeとかファイル入出力とかDBとか適当に組み合わせるだけだよ。
0490nobodyさん2006/01/27(金) 02:21:59ID:???
PHPで既存のスクリプトを改造してます。
0491nobodyさん2006/01/27(金) 06:25:24ID:???
>>490
いきなりそんなことを言う貴方はだぁれ?
0492nobodyさん2006/01/27(金) 12:31:39ID:???
>>490
引き続きがんがってください
0493nobodyさん2006/01/27(金) 14:07:06ID:lsupN3af
>>490
ついでにPHPも改造してください。
0494nobodyさん2006/01/27(金) 17:14:49ID:zienXgmO
PHP4系から5.1.2にアップデートしたら、

$test = 'hoo';
echo $test['bar'];

で「h」が出力されるようになったのですが、
($test['bar'] が $test[0] と評価されている?)
こういう仕様に変わったんでしょうか?
0495nobodyさん2006/01/27(金) 17:40:06ID:???
>>494
PHP4.0.1辺りから色々試したけど同じように「h」が出力されたぞ。

「存在しない添字は0として評価される」なんて公式な仕様はないと思うので、
仕様ではないと思うけど。
0496nobodyさん2006/01/27(金) 17:55:11ID:???
キモい挙動だけど仕様でしょ。
連想配列に添字でアクセスしようとしてるんじゃなくて、オフセットを指定して
文字列にアクセスしようとしてて、string "bar" が int 0 にキャストされてるだけ。
0497nobodyさん2006/01/27(金) 18:52:21ID:???
データベース抽象化しようと思うんだけど、良い感じの奴を教えておくれ。

php 4、MySQL、PostgreSQL 対応で。
0498nobodyさん2006/01/27(金) 19:15:36ID:???
>>495
存在しない添え字っつーか、それは文字列型への桁位置アクセスだからな。
配列とは違って数値しかありえない。よって[0]扱いが正しいと思われ。
0499nobodyさん2006/01/27(金) 19:18:59ID:???
ちなみに文字列への $hoge[0] 表記は過去互換で残されてるけど推奨はされない。
できれば $hoge{0} と書いた方がいい。
0500nobodyさん2006/01/27(金) 19:35:19ID:???
>>499
ごめんそれどっかにソースある?
0501nobodyさん2006/01/27(金) 21:51:27ID:???
>>500
http://www.php.net/manual/ja/language.types.string.php
文字列への文字単位のアクセスと修正

http://www.zend.com/engine2/ZendEngine-2.0.pdf
String offset syntax
0502nobodyさん2006/01/28(土) 00:18:29ID:???
>>501
ありが�d
0503nobodyさん2006/01/28(土) 03:53:00ID:vNPPStC0
PHPのuniqid()って
どのくらいユニークなのかな?
ミリ秒を種にしているとのことだけど
無限にユニークであり続けることなんて不可能だし。
UNIXタイムの限界くらいまでユニーク?
0504nobodyさん2006/01/28(土) 05:24:49ID:???
>>503
uniqidは現在時刻をマイクロ秒単位(マニュアルにはミリ秒って書いてあるけど)でそのまま16進表記しただけなので、2038年(だったっけ?)のいつだかまでの間に1マイクロ秒のズレもなく同時にuniqidを呼び出さない限りは確実にユニーク。
echo uniqid(), "\n", uniqid();ってやっても多分ちょっとはズレる。
ちなみにUNIXタイムスタンプの最大値0x7FFFFFFF(約20億)に100万を掛けた数の膨大なuniqidが存在し得る。
以下はソースのext/standard/uniqid.cから一部抜粋

> /* The max value usec can have is 0xF423F, so we use only five hex
> * digits for usecs.
> */
> if (more_entropy) {
>  spprintf(&uniqid, 0, "%s%08x%05x%.8f", prefix, sec, usec, php_combined_lcg(TSRMLS_C) * 10);
> } else {
>  spprintf(&uniqid, 0, "%s%08x%05x", prefix, sec, usec);
> }

spprintfっていったい何だ?w
05055032006/01/28(土) 09:32:11ID:???
>>504
なるほどー
分かりやすい説明ありがとう!
0506nobodyさん2006/01/28(土) 12:17:41ID:???
main/spprintf.c
0507nobodyさん2006/01/29(日) 02:15:45ID:???
Debug Build をNOにしたいのだけど
0508nobodyさん2006/01/29(日) 04:31:28ID:???
したいのだけど・・・?
0509nobodyさん2006/01/29(日) 10:01:30ID:???
したいのならすればいい。
0510nobodyさん2006/01/29(日) 15:22:58ID:mSKJalfC
DBに格納したデータを、先頭の"The"を抜いた条件で昇順でソートする方法ってどんなんでしょうか?

例>>
Aaa
The bbb
Ccc

これが思いつきそうで思いつかない……orz
0511nobodyさん2006/01/29(日) 15:31:15ID:???
HAHAHA、そうか!それ程言って欲しいのか!それならば言ってやろう!!

 ス レ 違 い
0512nobodyさん2006/01/29(日) 15:33:53ID:???
SQLのお話ならDB板へ。その時は使用しているDB名もお忘れなく。
05135102006/01/29(日) 15:43:09ID:mSKJalfC
>>512
これってDBの話なの?
DBからは素直にとってきて、配列にして、PHP側でさあどうソートするかって話だと思ったんですが……。
0514nobodyさん2006/01/29(日) 16:30:19ID:???
>>513
>これってDBの話なの?
「DBに格納したデータを」って書いてるじゃないか。

文面通りに解釈すると「DBに格納したデータを特殊な条件付でソートし結果を受け取りたい」と読める。
だから、「どこがPHPの質問なの?」と突っ込まれたわけよ。

まぁ、usort でも使ってユーザ関数でソートしたら?
05155102006/01/29(日) 16:40:58ID:???
>>514
そうか。言葉が足りませんでした。ごめんなさい。
usortでいじってはみてるんですが、これがなかなか……orz
0516nobodyさん2006/01/29(日) 16:49:08ID:???
ソース晒して分からない箇所を下質スレで聞くと誰か相手に(ry
05175102006/01/29(日) 16:55:30ID:???
>>516
わかりました。後はそちらに移動します。
どうもありがとうございました。
0518nobodyさん2006/01/29(日) 23:54:56ID:???
001に1を足して002、また1を足して003としていきたいのですが、
どういった方法があるでしょうか?
0519nobodyさん2006/01/29(日) 23:55:53ID:???
>>518
何が分からないのか皆目検討がつかない
05205182006/01/30(月) 00:12:30ID:???
カウンターで複数桁を使用したいと考えています、
1を2にするのは簡単ですが、
01を02にするのはかなり面倒そうですので。
0521nobodyさん2006/01/30(月) 00:16:29ID:???
>>520
あとで画像カウンタとか言うなよ
sprintf を調べろ
0522nobodyさん2006/01/30(月) 00:17:49ID:???
>>520
計算自体は桁考えずに行って、最後に表示するときだけ
printf("%03d", $cnt); と3桁化すりゃいーよ。
05235182006/01/30(月) 00:27:03ID:???
ありがとう!!
0524nobodyさんNGNG
ごめんなさい、↓なんですけど
自分で「短い文字でもちゃんとSJIS→JISに変換できるように!!」
と入れた処理なんですが、後から見て何をやっているか
わからなくなってしまいました。


/* 文字数が少ないとエンコードに失敗するんだとさ。*/
$message = "あいうえお眉幅ABC".$message;
$body = mb_convert_encoding( $message , "JIS", "EUC-JP,UTF-8,SJIS,ASCII,JIS");
$body = substr ( $body , 3 + 14 + 3 + 3 );

�@なぜ「"あいうえお眉幅"」ではなくて「"あいうえお眉幅ABC"」なのか
�A最後の「3 + 14 + 3 + 3」の詳細
解読できる人がいたら助けてください。。。。

0525nobodyさん2006/01/30(月) 01:57:49ID:???
くだ質行けばかちん
0526nobodyさんNGNG
>>525
ありがとう。
0527nobodyさん2006/01/30(月) 09:39:33ID:JutOeLmX
クラス名でタイプヒンティングすると一切のデフォルト引数が無意味になるけどこれは仕様と思ってあきらめるしかない?
nullを渡せたらまだよかったんだけど。
もしくはデフォルト引数にnewを書けたらまだよかったかも。
タイプヒンティングせずに関数内でinstanceofしか方法はないかな?
よりよい型の制限方法あったら教えてください。
0528nobodyさん2006/01/30(月) 17:33:56ID:???
>>524
�@英語もテストしたいから
�A数が大きくて同時に計算できなかった
0529nobodyさん2006/01/30(月) 18:52:22ID:???
php.ini の memory_limit を抑えて、DLさせる為にflushを利用しているのですが、巧く動作しません。
何かご存じの方、ご教授願います。

 ・実メモリ 128Mbytes
 ・DLファイル 1Gbytes
 ・直アクセスはしない
 ・DLダイアログは直ぐに出る
 ・https経由

DL部分のコードは下記の通りです。
ob_start(),ob_end_flush();を組み合わせても×でした。

$fp=fopen($FNAME,"rb");
while(!feof($fp)){
echo fread($fp,4096);
flush();
}

環境
 apache 1.3.33
 php4-4.4.1_1
05305292006/01/30(月) 19:28:04ID:???
素のコードで巧く行きました…。
これから切り分けて、後で報告します。 お騒がせしました。

test.php
<?
 $file="test.zip";
 header("Content-Type: application/octet-stream;");
 header("Content-Disposition: attachment; filename=$file");
 
 ob_end_flush();
 
 readfile("data/$file");
?>
0531nobodyさん2006/01/30(月) 20:56:32ID:EJ05v1/F
ご教授お願いします
POSTでwavのバイナリデータが飛ばされてくるシステムでデータを保存するのに
pack関数を使用して保存すれば良いのでは?という所まではたどり着いたのですが
どのように使用するのかがマニュアルを見たのですが今ひとつ分かりませんでした
どなたか使い方分かる方教えていただけませんか?

$data = urldecode($_POST['wavdata']);
$fp = @fopen("./data.wav","wb");
fwrite($fp, pack("[この部分がわかりません]",$data));
fclose($fp);
0532nobodyさん2006/01/30(月) 21:31:50ID:???
>>531
その前に何でそのシステムがRFC1867に基づく
ファイルアップロードを行わない(させない)のか教えてくれる?
Webブラウザ以外の特殊(といっていいのかな)なクライアントでも対応してる
場合が多いと思うけど。PHPでもアップロードのクラスがPEARにあるよ。
0533nobodyさん2006/01/30(月) 21:46:56ID:/1xdn91h
×ご教授
○ご教示
05345312006/01/30(月) 21:47:09ID:???
>>532
私もシステム開発元になぜRFC1867に基づくファイルアップロード
を使用できないのか聞いたのですが、
開発元で作成したデータ保存後にFTPで送信するCGIを使用するか
もしくは自分で何とか出来るならしてください
の一点張りで結局教えてくれませんでした。
現在はつなぎとして開発元が提供しているFTPのCGIを使用していますが
とにかく遅いので自前で何とかしようと今回の書き込みとなりました。
0535nobodyさん2006/01/30(月) 22:12:12ID:???
>>534
それを読んだ限りだと、開発元が作成したのはデータ保存後FTPで送信する物であり、POSTでバイナリを送りつける妙な仕様の物ではない
つまり、その妙な物を作ったのは貴方だと受け取れるが、そうなのか?

仮にそうなら、そんな妙な仕様の物を作るのはやめて、RFC1867に基づくファイルアップロードをやってくれる物を使うべきだ

まぁ・・そもそも、遅いのはFTPするCGIが原因なのか?とか作って時間の無駄だったと気付きそうな香りが・・・。
0536nobodyさん2006/01/30(月) 22:13:31ID:???
お絵描き掲示板みたいにJavaアプレットが自力でバイナリを生成して
それを標準出力(=POST)で送ってくる、とかの類じゃないの?
で、巷のお絵描き掲示板でそういう処理は実際にやってるから
ソース見てみたら参考になると思う。
参) PHP製のお絵描き掲示板 >ttp://www.punyu.net/
0537nobodyさん2006/01/30(月) 22:16:36ID:???
ちなみにお絵描き掲示板の場合は、一定のヘッダの後に
生のバイナリデータがそのまま送信されてくるので、
urldecodeだのpackだのは要らないです。
ヘッダで指定されたサイズで受信してそのまま保存。

なので、全然違う仕様の可能性も高いけど、それ以外に
そんな変な仕様になる理由が思いつかなかったので。
05385312006/01/30(月) 22:22:57ID:???
>>535
開発元がPOSTでバイナリデータを送っいるといっていますので
こちらでわざわざ妙なつくりにしたということはありえません。

FTPが遅いのは流れから言っても確実です
FTPを使用した場合
CGIにデータ渡す>データをエンコード後保存>FTP接続しこちらのサーバーへ>ファイル公開
FTP使用しなかった場合
データをエンコード後保存>ファイル公開
05395312006/01/30(月) 22:51:32ID:???
>>536
ありがとうございます
ためしてみます
報告はまた後ほど
05404522006/01/31(火) 00:20:15ID:+LWq5c8/
>>456
>>457
亀ですんません。

[:XXXX:]は[:はーと:]と言ったように、
ひらがなで統一しようと思ってました。
でも、英数字でも問題ないです。

preg_replaceだと1個しか置換できないのかと考え、
preg_match_allで、[::]内のひらがなを抜き出し、
ループで回して該当する画像を表示させようと思ってたのですが、
>>456さんのやり方の方がいいのでしょうか。

正規表現がよくわからなくて、
調べてはみたものの、
ちぐはぐな返答かもしれません。
ごめんなさい。

---------------------------------------------------------
$text = 今日は天気[:hare:]がいい!明日は雨[:ame:]らしい。
---------------------------------------------------------
$textを表示させるときに、[:hare:]=太陽の画像、[:ame:]=傘の画像を
表示させたいのです…
05415312006/01/31(火) 00:50:36ID:???
>>536
完全なテスト環境が家に無いので確実とはいえませんが
教えていただいたもので何とかなりそうです
みなさんありがとうございました
0542nobodyさん2006/01/31(火) 01:21:23ID:???
>>540
なんとなく、こんな感じかな?
ってか、正規表現くらい勉強しろ。”調べる”のではなく、”勉強”だ。
あと、
> preg_replaceだと1個しか置換できないのかと考え、
”考え”ではなく、試せ。せっかく >>456 が良い回答しているのに・・・。

以下、動作未確認スクリプト。

//
$text = "今日は天気[:hare:]がいい!明日は雨[:ame:]らしい。";
$text = preg_replace('/\[:(\w+?):\]/e', 'emoji($1)', $text);

function emoji($code) {
// 以下、DBに接続できていると仮定
$imageFileName = "";
$result = mysql_query("SELECT imageFileName FROM table_name WHERE emojiCode = '{$code}'");
if (mysql_num_rows($result)) {
$imageFileName = "<img src=\"".mysql_result($result , 0)."\">";
}
return $imageFileName;
}


0543nobodyさん2006/01/31(火) 01:41:28ID:kuYyOVO4
他鯖のファイル取りに行く時にIf-Modified-Sinceとかヘッダ送りたい時は
fopenとかじゃ無理だよね。
自前でサーバーにつないでhttpリクエスト書かなきゃダメ?
もしくはそういうステキなラッパーがあれば・・・
0544nobodyさん2006/01/31(火) 01:44:59ID:???
>>540
ちょっと調べてみたけど、sjisかeucだったら2バイト目にコロンと同じコード(3A)が来る文字はないから>>542の正規表現を'/\[:(.+?):\]/e'にすれば問題なくマルチバイト混在可能になるはず。
ただUTF-8の場合は2バイト目以降全てのコードがありえるらしいから : の直後に ] があると意図しない結果になるかも。
JISは終端エスケープが完全なら問題なし。
0545nobodyさん2006/01/31(火) 01:50:48ID:b+k1eFbT
PHPにて、関数を使ってフィボナッチの計算をしてみたかったのですが、どうにもうまく
できません。プログラムは以下のようにやっています。
<?php $n; $i; function fib($n){if($n==1){return 1;}else if($n==0){
return 0;}else{return fib($n-1)+fib($n-2);}}
for($i=0;$i<=20;$i++){print("fib($i)");} ?>
そして結果が、
fib(0) fib(1) fib(2)・・・fib(20)
のようになってしまい、ちゃんとした値がでません。
計算の仕方自体は間違っていないと思うのですが、functionのあたりが間違って
いるような気がしないでもありません。
echoや&をつけたりといろいろしているのですがうまくいきません。
何が違うのか、どうすればいいのかを、どうか教えて下さい。お願い致します。
0546nobodyさん2006/01/31(火) 02:10:55ID:???
>>543
PEAR の HTTP_Request を使うといいよ
0547nobodyさん2006/01/31(火) 02:11:53ID:???
>>540
人の回答を信用する気がないなら
最初から質問なんてしなきゃいいのに
0548nobodyさん2006/01/31(火) 02:12:45ID:???
>>545
print("fib($i)"); → print(fib($i));

print("fib($i)") ってのは文字列に$iの値を埋め込んで出力するって事、つまりfib()を関数として認識してない。
それと動作しないのとは関係ないけど、最初に書いてる$n; $i; は不要。$i は for($i=0; ...) で初期化されてるし、$n は使われてない。

まぁ次からは下質スレにおいで
■ このスレッドは過去ログ倉庫に格納されています