トップページphp
990コメント299KB

【PHP】下らねぇ質問はここに書き込みやがれ 68

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/05/03(土) 22:52:16ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは970が立ててください立たなかった場合は980よろ

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 67
http://pc11.2ch.net/test/read.cgi/php/1207863515/
◆質問する時の注意
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を必ず明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくはトリップをつける事。

◆質問後の注意
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくは質問時のトリップをつける事。
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0356nobodyさん2008/05/09(金) 23:02:42ID:???
>>354
>>355
あっ!なるほど。 私のうっかりですね・・・(汗汗
お返事ありがとうございました。
0357nobodyさん2008/05/10(土) 10:59:14ID:3v++6OkN
オブジェクトの指定したメソッドにフックを差しこみたいと思います
runkitを入れたのですが、
これだとクラスのメソッドを書き換えるのでちょっと大げさです
オブジェクトだけのメソッドを書き換えるにはどうしたらいいですか?
0358nobodyさん2008/05/10(土) 11:39:01ID:???
>>357
継承
0359nobodyさん2008/05/10(土) 11:52:36ID:???
インスタンスに対して操作したいんです
0360nobodyさん2008/05/10(土) 12:45:57ID:???
何それどういう状況?
0361nobodyさん2008/05/10(土) 13:22:00ID:???
auでセッションがうまくいきません。

ログイン
 ↓
セッション生成、値格納
 ↓
ページ移動(ページA)
 ↓
セッション情報を使う
 ↓
ページ移動(ページB)
 ↓
セッションがなくなる

こんな感じになります。
ページAとBは同じソースなので
プログラムがおかしい時はどっちもおかしくなりますw

DoCoMoはうまくいったのですが....

解決方法をご存知の方。
教えてください!
よろしくおねがいします、
0362nobodyさん2008/05/10(土) 13:24:46ID:vET5c+ho
質問です
良くある、ページが2つのエリアに別れていて「左がメインコンテンツ」「右がコンテンツに関連する広告」
みたいな構造って、左のコンテンツを吐き出す処理の中で、その中のキーワードに応じて
右のコンテンツを吐き出すfunctionを叩くような形になっているんでしょうか?
もしくは、広告のキーワードを変数として吐き出して、それを広告部分のphpが取得して
出力処理って流れなのかな? (ad.php?key="music"みたいな…)

どういうやり方で作ればいいのか、アドバイスお願いします
0363nobodyさん2008/05/10(土) 13:48:26ID:???
左がメインコンテンツで右が広告なんてサイト知らんわボケ
0364nobodyさん2008/05/10(土) 14:36:45ID:???
2ペインでどっちが広告でもいいじゃねえか

で、>>362の場合は好きに作れって結論になると思うが
良くあるって話だと今はフレーム切らないから、メインコンテンツを吐く処理中に
広告を吐くfunctionを呼びゃいいんじゃね
テンプレートエンジンを使ってるなら、出力順なんて気にならないだろ
03653612008/05/10(土) 14:49:38ID:???
すいません、ケアレスミスでした。
0366nobodyさん2008/05/10(土) 14:51:57ID:???
>>362
コンテンツの内容に合わせて広告も変えるってことでいいのかな

それだとしたらphpshotのここ最近の記事を参照
ヒントはここまで
0367nobodyさん2008/05/10(土) 15:20:51ID:???
>>362 ってアフィリエイトとかの話かと思ったんだけど、違うのかな。
どこまで最適にやるかって話はあるけど、amazonのなんかだと自動的に判別してくれるんじゃないの。
0368nobodyさん2008/05/10(土) 15:34:43ID:baYV5j6g
おしえてgooに出したんですが回答が無かったもので、マルチポスト失礼します、


PHPにおける特殊記号の取り扱いについて質問させていただきます。

以下の処理を行っているのですが特殊記号'―'(ダッシュ)の扱いで悩んでいます。
1.文字コード'utf-8'のファイル内文字列をget_filecontentsで取得
2.取得文字列を'SJIS'に変換(mb_convert_encoding使用)
3.文字列内に'―'が存在していた場合'?'となってしまう
ex)"今日の野球結果 5―6"(文字コードutf-8)
 ->SJIS変換後 "今日の野球結果 5?6"

特殊文字'―'を文字コード変換できずに上記のような現象が起こっていると
思うのですがこれを回避する方法がありましたらご教示お願いします。

※サーバ:solaris
 PHPバージョン:4.3.8

0369nobodyさん2008/05/10(土) 15:40:48ID:???
マルチ乙
0370nobodyさん2008/05/10(土) 15:43:06ID:???
php.iniの内部エンコーディングの設定とか
該当部分のコードぐらい書けよ
だれもおまえが書いたようなコード書けるんだし、著作権を主張するほどのライブラリってわけじゃないんだろ
0371nobodyさん2008/05/10(土) 15:57:59ID:???
>>368
土曜も仕事ですか?
0372nobodyさん2008/05/10(土) 16:12:21ID:baYV5j6g
>>371

いや、仕事じゃないんですけれど
解決できてず、悩んでるので書き込みさせて頂きました。
0373nobodyさん2008/05/10(土) 16:27:38ID:???
>>368
これって MS932がSJISと異なるとかいう話題だよね。
試してないけど、SJISじゃなくて、SJIS-WIN とか指定すればいいのかな。
0374nobodyさん2008/05/10(土) 16:28:39ID:???
DoCoMo以外で
session_destroy();
するとうまく動作しないんですがなんででしょうか
0375nobodyさん2008/05/10(土) 16:29:14ID:baYV5j6g
$boolReadXmlData = XML_Analizer( HOGE_RDF,CORRECT_FEED_HOGE );
function XML_Analizer($file,$correct_feed){
if( !file_exists( $file ) ){
$cpCmd = '/usr/bin/cp -p ' . $correct_feed . ' ' . $file;
system( $cpCmd, $ret );
}
$data = file_get_contents($file);
    $data = str_replace("[―]","-",$data);
if( !$data ){
return false;
}
$str_encoding = mb_detect_encoding($data, 'auto');
if ($str_encoding != 'UTF-8') {
$data = mb_convert_encoding($data, 'UTF-8', $str_encoding);
}
$Unserializer =& new XML_Unserializer();
$Unserializer->setOption('parseAttributes', TRUE);
$status = $Unserializer->unserialize($data);
if ($status === true) {
$res_array = $Unserializer->getUnserializedData();
$arr_result_constructure[] = $res_array;
return $arr_result_constructure;
}else{
return false;
}
}

この後utf-8からSJISに文字コード変換しています
'―'の文字コード「?」を使って文字変換できないものでしょうか。
※$data = str_replace("[―]","-",$data); このあたりで
0376nobodyさん2008/05/10(土) 16:31:23ID:baYV5j6g
>>373

ありがとうございます
早速ためしてみます!
0377nobodyさん2008/05/10(土) 16:32:23ID:DzSEGQLQ
配列 $arrayから偶数番目の要素のみ取り出すにはどうしたらいい?

$array = array(あ,い,う,え,お,か,き,く,け,こ);

これを

$array = array(い,え,か,く,こ);

にしたいんだけど。
0378nobodyさん2008/05/10(土) 16:39:49ID:baYV5j6g
>>375

誤記がありました
この後utf-8からSJISに文字コード変換しています
'―'の文字コード「―」を使って文字変換できないものでしょうか。
~~~~~~~~~~~
※$data = str_replace("[―]","-",$data); このあたりで
0379nobodyさん2008/05/10(土) 16:56:03ID:???
$array = array('あ','い','う','え','お','か','き','く','け','こ');
$dest = ();
$t = length($array) / 2;
for (int i = 0; i < $length; $i++) {
$dest[] = $array[$i * 2];
}
0380nobodyさん2008/05/10(土) 17:02:50ID:???

$_SESSION = array();

session_destroy();

session_unset();

これらを使ってセッションの中身(?)を消そうと思ったんですが
DoCoMoではdestroy以外、auでは全てで消えませんでした。

仕様ですか?w
03813802008/05/10(土) 17:08:56ID:???
auでは
old A
new B
data 100

としてお気に入りに入れて
再度アクセスしたら
old B
new C
data 100

で出てくるような感じです。

A、B、CはPHPSESIDをあらわしてます。
dataはsessionでもちまわってるデータです
0382nobodyさん2008/05/10(土) 17:46:30ID:09hEgNWC
php5.2.6内にPEARのバッチファイルが無いのですが
どうやってインストールしたらいいのでしょうか?
0383nobodyさん2008/05/10(土) 18:18:12ID:???
>>376
失敗だったら失敗で、結果を書いてってほしいな。
03843802008/05/10(土) 18:50:06ID:???
cookieの破棄処理をはさむと
アドレスはBでくるのに
old C
new D

になってしまい、それはそれでおかしな動作になります(T_T)
0385nobodyさん2008/05/10(土) 19:42:52ID:???
>>377
ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail.php?queId=7136970

こちらのほうがきれいなコードでおすすめ
0386nobodyさん2008/05/10(土) 19:46:46ID:???
剰余つかったら負けかなと思ってる。
0387nobodyさん2008/05/10(土) 19:57:15ID:???
意味不明
03882008/05/10(土) 20:50:31ID:bCQuG41r
XREAの鯖を借りています。パーミッション600のパスワードファイル(pass.cgi)が、簡単に見られてしまいます。グループからのアクセスは600で拒否しているのに、なんで見られるのでしょうか?
0389nobodyさん2008/05/10(土) 21:04:08ID:???
スレタイ100回読んで出直せ。
0390nobodyさん2008/05/10(土) 21:07:08ID:???
>>388
それはグループ以外に見られている可能性はないのかな?
0391nobodyさん2008/05/10(土) 21:17:42ID:ZfUSU8TD
今、php5で作っているんですが、会員制サイトなので
ログインチェック用に別ファイルの.phpをすべてのページに読み込ませたいと
思っています。
個別に include()させるほかにどんな方法があるでしょうか?
アドバイスお願いします
もしかしたらphpの話題からずれてるかもしれませんが、もちろんphpでも
うまいやり方があれば教えてください。よろしくお願いします
0392nobodyさん2008/05/10(土) 21:20:53ID:???
ログインチェックファイルの中で個別コンテンツをincludeする
0393nobodyさん2008/05/10(土) 21:34:39ID:batXv2Os
zend studio+zend debuggerを使ってデバッグをしていましたが、
xdebugをインストールし、有効にすると、
zend debuggerがphpinfoに表示されなくなりました。
zend debuggerとxdebugは同時に使うことが出来ないのでしょうか?
同時に使う方法があれば教えてください
0394nobodyさん2008/05/10(土) 21:42:03ID:???
両方動かすのは無理だと気づこうぜ
0395nobodyさん2008/05/10(土) 22:22:47ID:???
デバッグはzend debugger
エラー時のスタックトレースはxdebug
って感じに両方の機能を使いたいんですが
やっぱり無理ですかね〜
0396nobodyさん2008/05/10(土) 22:37:07ID:???
くどい
0397nobodyさん2008/05/10(土) 22:44:15ID:???
>>396
お前に聞いてねーよデブ
0398nobodyさん2008/05/10(土) 22:47:07ID:???
はい、それでは次の質問をどうぞ
0399nobodyさん2008/05/10(土) 22:57:37ID:???
できねえもんはできねえんだよ氏ね
0400nobodyさん2008/05/10(土) 23:01:55ID:???
>>399
ゴリラは動物園に帰れよ
0401nobodyさん2008/05/10(土) 23:14:52ID:???
何事も無かったかのように、次の質問をどうぞ
0402nobodyさん2008/05/10(土) 23:22:14ID:???
393 名前:nobodyさん[] 投稿日:2008/05/10(土) 21:34:39 ID:batXv2Os
zend studio+zend debuggerを使ってデバッグをしていましたが、
xdebugをインストールし、有効にすると、
zend debuggerがphpinfoに表示されなくなりました。
zend debuggerとxdebugは同時に使うことが出来ないのでしょうか?
同時に使う方法があれば教えてください

395 名前:nobodyさん[sage] 投稿日:2008/05/10(土) 22:22:47 ID:???
デバッグはzend debugger
エラー時のスタックトレースはxdebug
って感じに両方の機能を使いたいんですが
やっぱり無理ですかね〜

397 名前:nobodyさん[sage] 投稿日:2008/05/10(土) 22:44:15 ID:???
>>396
お前に聞いてねーよデブ

400 名前:nobodyさん[sage] 投稿日:2008/05/10(土) 23:01:55 ID:???
>>399
ゴリラは動物園に帰れよ
0403nobodyさん2008/05/10(土) 23:48:22ID:0rIgLgLy
質問です。
フォームの(POST)データをデータベースに入れる際
何か処理(htmlspecialcharsなど)をしたほうがいいのでしょうか?
それとも何も処理無しでも問題ないのでしょうか?
もしよろしければデータベースに入れるまでの処理をご教授ください。
よろしくお願いします。
0404nobodyさん2008/05/10(土) 23:49:50ID:???
こんなところで聞かないでちゃんと基礎から学べよ
0405nobodyさん2008/05/10(土) 23:50:55ID:DfRnQgur
セキュリティ関係は勉強しても不安なものさ。わかるだろ?
0406nobodyさん2008/05/10(土) 23:53:09ID:???
>>403
htmlspecialcharsはDBに入れるときじゃなく表示するときに処理する
DBには生データを入れて問題はないんじゃね
もちろんSQLインジェクション対策だけはしてな
04073802008/05/11(日) 00:19:51ID:???
どなたかよろしくお願いいたします。

携帯3キャリア共通でうまくセッションを持ちまわる方法をいろいろ試し中です。
SIDを用いることはわかったのですが
クッキーが残ったりでうまくいってないように感じます。

よろしくおねがいします。
04084032008/05/11(日) 00:22:43ID:Zep2ba94
>>406
ありがとう。
>>405
まあそういうことです。
0409nobodyさん2008/05/11(日) 00:39:36ID:lx6MvMXP
>>392
ありがとうございます、それってどういうことですか?
済みませんが良くわからないのでもう少し解説お願いします
0410nobodyさん2008/05/11(日) 01:22:00ID:???
>>409
auto_prepend 使えば?
0411nobodyさん2008/05/11(日) 01:25:39ID:???
>>409
ログインチェックファイルがあるじゃん?
あとそれぞれの個別コンテンツがあるじゃん?
前者の中で後者をincludeするってこと。
04123772008/05/11(日) 03:45:04ID:KEs91aIs
>>379
>>385

ありがとう〜!
両方試してみました。
>>385のリンク先のソースを利用することにしました。
どもです!
0413nobodyさん2008/05/11(日) 06:14:53ID:4J9HPCgP
$_POST[hoge] と
$_POST["hoge"]
の違いってなんなんでしょうか?

サンプルで

if (isset($_POST["submit_resdel"])){
 $res_no = key($_POST[submit_resdel]);

って記述があったんですが、これって2個目の$_POST[submit_resdel]は
$_POST["submit_resdel"]でもいいんじゃないかという気がするのですが・・・。
0414nobodyさん2008/05/11(日) 07:04:04ID:???
間違ってるだけに一票
0415nobodyさん2008/05/11(日) 07:09:19ID:LZ9HoYsn
PHP4.4.4(サーバはxrea)で、
__construct()が問題なく呼び出されているのですが、
PHP4系でも対応してるんですか?
0416nobodyさん2008/05/11(日) 07:09:30ID:???
一応それでも動く
0417nobodyさん2008/05/11(日) 07:10:04ID:???
>>416>>413 向けな
04184132008/05/11(日) 07:18:18ID:4J9HPCgP

こんな時間にありがとうございます。

>>414さん
やっぱりそうなんでしょうか・・・。
ここの例では、submitするとき、以下のように組んで配列っぽく
セットしてるんですが、


while($row = $mysql->fetch()){
$no = $row["no"];
$name = $row["name"]
echo <<<EOT

$no:
<input type="text" name="name[$no]" value="$name" size="10">
<input type="submit" name="submit_resdel[$no]" value="削除">
<br>
EOT;
}


このときだけは特別、とかいうことは・・・ないですよね。。


>>417さん
動作はするんですね!
でも、どっちも[submit_resdel]にしちゃうとそれはそれで動作しませんよね?
0419nobodyさん2008/05/11(日) 07:34:49ID:???
>>418

変数じゃなくて文字列か
それなら動作しないわ

書き間違いだと思われ
04204132008/05/11(日) 07:43:03ID:4J9HPCgP
>>419さん
ありがとうございます。やはり書き間違いですか・・・

今回のこの件をググってる最中に↓のようなページをみつけたんですが、

ttp://oshiete.coneco.net/qa4004454.html

このページでの質問者も同じように記述してるんですよね・・・わざわざダブルクォーテーション外して・・・。
key関数を使うときだけ・・・?とか色々考えたんですが、
とりあえず書き間違いと思って進めていこうと思います。

皆様ありがとうございました。
0421nobodyさん2008/05/11(日) 08:08:48ID:???
>>359
runkit_method_redefine
これじゃできないん?

もうちょっと具体的にやりたい事書かないとわからん
0422nobodyさん2008/05/11(日) 08:10:14ID:???
>>413
カメレスであれだけど、一応。

書き間違えとは思うが、文法的には未定義の定数の動作。
PHPは好きだけど、さすがにこの仕様はどうかと思う。

http://www.php.net/manual/ja/language.constants.php
>未定義の定数を使用した場合、ちょうどstringとして コールしたかのように(CONSTANT vs "CONSTANT")、
> PHPはその定数自体の名前を使用したと仮定します。
04234132008/05/11(日) 08:19:46ID:4J9HPCgP
>>422さん

おおっ!ありがとうございます!
なるほど、未定義の定数として使用され、さらにそのものの名前を使用したと解釈されて
動作しちゃうわけですね・・・。。
私自身、現在習作を作る過程でPHPに慣れようとしているのですが、
確かにこの仕様には違和感がありますね。

書き間違えだったとしても、きちんと動作したものとして公開されていた理由がわかって、
やっとスッキリしました。
やっと寝られます。笑 ありがとうございました!
0424nobodyさん2008/05/11(日) 08:24:05ID:???
>>422
どっちかってーと
http://www.php.net/manual/ja/language.types.array.php#language.types.array.foo-bar
こっちだな

>>415
__constructを使ったコンストラクタはphp5からで
php4の場合はただのメソッドになる

class Hoge {
 function __construct() {
  echo 'A';
 }
 function Hoge() {
  echo 'B';
 }
}
これを実行したらphp4の場合はBが出てphp5の場合はAが出る
で、php5で__constructが無い場合はHogeが呼ばれる
04254152008/05/11(日) 08:33:54ID:LZ9HoYsn
>>424
確かにそうでした!

>PHP4.4.4(サーバはxrea)で、
>__construct()が問題なく呼び出されているのですが、

というのは、自分のテストコードに間違いがあったための、勘違いでした。
0426nobodyさん2008/05/11(日) 12:51:45ID:t1T6pRlq
rand(1,3)で、1〜3の数字をランダムで出せますが、
「1が出る確率は50%、2が出る確率は30%、3が出る確率は20%」
と言う風に、確率として表示する場合、どういう計算式にすればいいのでしょうか?
0427nobodyさん2008/05/11(日) 12:55:27ID:???
01234・・・1
567・・・2
89・・・3

0428nobodyさん2008/05/11(日) 12:55:49ID:???
なにその宿題丸投げ
0429nobodyさん2008/05/11(日) 13:28:56ID:???
PHPを仕事場でやっていると、集中している時に下記みたいな文章を首に掲げたくなる俺は三流ですよ?

/*
現在理論しか通じないパソコンとプログラミングで対話中です。
人様との円滑な対話モードへの切り替えが少々上手くいかない場合や遅い場合が多々ありますので、理屈や理論以外をお求めの方はご遠慮頂くか少々お待ち頂くか生暖かい目で見守ってくださるようお願い致します。
*/
0430nobodyさん2008/05/11(日) 13:41:54ID:???
>>426
$a = array(1,1,1,1,1,2,2,2,3,3);
echo $a[array_rand($a)];
0431nobodyさん2008/05/11(日) 13:55:36ID:???
質問です。
PHP5 PEAR image_graph7.1
でjpg画像を作りたいのですができません(PNGはできる)
$graph =& Image_Graph::factory("graph", array(array("width" => 400, "height" => 400, "canvas" => "PNG")));
ここの最後の方の部分をJPGにする以外に変更が必要なのでしょうか?

下記の方法だと画像JPG画像はしっかり保存されてはいます。
$out = $Graph->done(array(
'tohtml' => TRUE,
'border' => 1,
'filename' => 'tes.jpg',
'filepath' => './',
'urlpath' => './'
)
);
0432nobodyさん2008/05/11(日) 14:05:58ID:???
できませんって何がどうできないでどうなってしまうのか書かないと分かるだけないだろ
0433nobodyさん2008/05/11(日) 14:48:08ID:???
>>432氏ね聞いてねえよ
0434nobodyさん2008/05/11(日) 14:57:33ID:???
CentOS 4.6 (kernel 2.6.9-67.0.1.EL)
Apache/2.0.52
PHP 4.3.9 (cgi) (built: Sep 20 2007 19:31:11)
mysql Ver 14.7 Distrib 4.1.20
phpmyadmin-2.11.6-1.el4.rf

という環境です。この環境で、
クライアントマシンから phpmyadmin にアクセスすると、
mcrypt 拡張をロードできません。PHP の設定を確認してください
と警告を受けます。mcrypt 関係は

libmcrypt-devel-2.5.7-2.el4.kb
libmcrypt-debuginfo-2.5.7-1.2.el4.rf
libmcrypt-2.5.7-2.el4.kb
mcrypt-2.6.4-2.el4.kb

がインストールしてあるのですが。
この問題はどのようにフィックスすべきなのでしょうか?
それとも何も問題がないのでしょうか?
0435nobodyさん2008/05/11(日) 15:12:25ID:???
PHPをmcrypt対応にしてリビルド
0436nobodyさん2008/05/11(日) 15:15:43ID:???
ttp://phprpms.sourceforge.net/mcrypt
のRHEL4用php-mcryptを入れても大丈夫かもしれんが試してない
0437nobodyさん2008/05/11(日) 17:27:34ID:???
>>432
あなたバカですよね?よくわかります。
0438nobodyさん2008/05/11(日) 18:57:26ID:???
いいえ、ケフィアです
0439nobodyさん2008/05/11(日) 20:39:47ID:???
いいえ、ケフカです。
0440nobodyさん2008/05/11(日) 21:00:47ID:???
1人の天才的な人間の出現で、10000人の人間が不要になる時代。
そんな時代にあって、俺はその天才的な人間の1人なのかもしれない。
俺のせいで、仕事がなくなって首になった奴が相当いる。
もちろん、その中には潰れた会社もある。
でも、それが自然淘汰、適者生存であり自然の摂理なのだから・・
04414262008/05/11(日) 23:21:03ID:t1T6pRlq
>>430
ありがとうございます。上手くできました。

ただ、細かい%で区切りたい場合はどうなるのでしょうか?
array内の数が増えすぎると思うのですが・・・。

if文と倍数を使う方法も考えたのですが、数学が苦手でわかりません。。
何か良い関数はないでしょうか?
0442nobodyさん2008/05/11(日) 23:23:03ID:???
>>441
rand
range
0443nobodyさん2008/05/11(日) 23:34:25ID:???
>>441
参考に
if($hensu<50){}elseif(50<$hensu){}
0444nobodyさん2008/05/11(日) 23:37:06ID:???
$hensu(笑)
04454262008/05/11(日) 23:42:46ID:???
みなさん、ありがとうございます。
教えて貰ったのを参考に、以下のソースを作りました。
たぶん、行けるのではないかと思っていますが、おかしい場合は指摘して下さい。

$item = array("aaa"=>"50","bbb"=>"30","ccc"=>"20");
$num_max = array_sum($item);

foreach($item as $keys => $values){
$number = $values/$num_max*10;
for($i=0;$i<$number;$i++){
$array[] = $keys;
}
}
echo $array[array_rand($array)];
0446nobodyさん2008/05/11(日) 23:48:23ID:???
10の倍数しか対応してないじゃねえかw
0447nobodyさん2008/05/12(月) 00:05:59ID:???
アホになります
0448nobodyさん2008/05/12(月) 00:17:13ID:???
オモロー
0449nobodyさん2008/05/12(月) 00:59:12ID:???
XMLデータを扱ってます。

http://jp2.php.net/manual/ja/simplexml.examples.php
$obj = new SimpleXMLElement($xml);

PEARのXML_Serializerを使わないで、PHP5の関数を使って
オブジェクト$objを配列に変換するにはどうしたらいいですか?
04504492008/05/12(月) 01:01:55ID:???
ググッたら解決しました
04514492008/05/12(月) 01:45:29ID:???
>>450
秋元さんのブログの解説?
http://akimoto.jp/blog/2008/01/05/php%E3%81%A7%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%92%E9%85%8D%E5%88%97%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AFget_object_vars/

よく分からなかったので、とりあえずPEAR::XML_Serializerを使うことにしました!^^
…便利すぎて勉強にならん><
04524492008/05/12(月) 01:49:26ID:???
include ('XML/Unserializer.php');
$unserializer = new XML_Unserializer();
$unserializer->unserialize($xml);
$array = $unserializer->getUnserializedData();
print_r($array);
これでOK

$obj = new SimpleXMLElement($xml);
でも値を取り出せるのでOKなんだけど、データ型はオブジェクトのまま
配列と同じ操作で扱うのは何か変だなーと思った
おやすみなさい
0453nobodyさん2008/05/12(月) 01:53:48ID:???
配列と同じ操作で扱って問題あるの?
0454nobodyさん2008/05/12(月) 07:24:54ID:o0vmBy2P
すいません質問です。
今運営しているPCサイトの携帯版を作ろうと思っています。
携帯用にするとき、元のサイトのサイズが大きいため分割する必要があると思い自分なりにやってみましたが、
分割のやり方が悪いため、htmlタグの途中で切れたりして変になってしまいます。


//1ページあたりの文字数(ページのサイズ)
$pagesize=1000;

元の文字列をページサイズで割り、合計のページ数を出す
$totalpage=ceil($str/$pagesize);

//↓1ページ目の場合は、テキストが0〜1000までの部分文字列になる
$text=mb_substr($str,($page-1)*$pagesize,$pagesize);

上記のようにやってみたのですが、下記のようになったりします。
----------------------------------------------------
nページ目のテキスト終わり部分

・・・・・・・・
<a href="http:
---------------------------------------------------
n+1ページ目のテキスト始め部分

//hoge.com">ホゲドットコム</a>
---------------------------------------------------

タグの部分で分割させないためには、
1000文字を超えたところで一番最初に出てくる \n で分割したりすればいいと思うのですが、
それはどのようにやればいいのでしょうか。
アドバイスお願いします。
0455nobodyさん2008/05/12(月) 07:42:33ID:???
正規表現で /^.{1000}.*?\n/s とかすれば良いんじゃなかろうか。
. が1バイトになるのか1文字になるのかは、よく知らないから自分で確認してね。
■ このスレッドは過去ログ倉庫に格納されています