【PHP】質問スレッドpart27【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
05/03/03 22:41:23ID:???・新規質問の方は上げてください。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-10辺り
0267245
2005/03/23(水) 17:55:48ID:???遅くなりました。すみません。(>>245 >>247 >>249の件です)
パーミッションはrwx r-x r-xです。
所有者は私のFTP接続アカウントと同一です。
よろしくお願いします。
0268nobodyさん
2005/03/23(水) 17:59:15ID:???あらゆる処理の前に print "(行番号):"; てなものを放り込んで、
どこまで実行できているのか調べる。
君にはそれがお似合いです。
0269PHP初心者
2005/03/23(水) 18:49:14ID:2nyWi/q2取り急ぎ、お礼を申し上げます。 m(_ _)m
MySQLのバージョンは4.0.22です。
お教えくださったことを早速、試してみたいと思います。
0270245
2005/03/23(水) 19:32:25ID:???ディレクトリのパーミッションをrwx --x rwxです。
ありがとうございました。
0271nobodyさん
2005/03/23(水) 21:04:21ID:???自分に知識が無いのは分かってまつ(;´Д`)
最後にこれだけ教えてください
ほぼコピペしただけでも動かないってことは
>>257のソースには不備があるってことですか?
0272nobodyさん
2005/03/23(水) 21:17:45ID:???0273nobodyさん
2005/03/23(水) 21:17:52ID:???まず、view.phpのほうで、ちゃんとincludeできてるかどうかとか、
そういうのを>>265の言うとおり、
一個一個表示して確かめないとね。
そうしないと何行目がまずいんです!ってのはわかんないと思うよ。
0274nobodyさん
2005/03/23(水) 21:18:25ID:???同じテレビでも違う地域に引っ越したら、場合によっては受信設定を変える罠
0275nobodyさん
2005/03/23(水) 23:11:40ID:fSPzJGOM$case = '17,241';
?>
<?
print"\\$case(送料等含む)<br>";
?>
これで表示されませんorz
なにかまちがえてますでしょうか・・・?
0278nobodyさん
2005/03/23(水) 23:45:07ID:fSPzJGOMありがとうございました!
0279nobodyさん
2005/03/23(水) 23:46:15ID:???print"\\$case(送料等含む)<br>"; の 変数名の部分$case〜をうまく認識できていないんですよ。
<?
$case(送料等含む) = '17,241';
print"\\$case(送料等含む) (送料等含む)<br>";
?>
これで解決ですね(゚∀´)b
print"\\$case (送料等含む)<br>"; // 次の文字との間をスペースで分離
print"\\".$case."(送料等含む)<br>"; // 文字列演算子で分離
print"\\{$case}(送料等含む)<br>"; // { }で囲む
のように変数名の部分を(PHPの中の人に)分かり易く書くこともできます。
0280nobodyさん
2005/03/24(木) 00:40:10ID:???'\'.$case.'(送料を含む)'."\n"
このくらいから始めとけ。
printf()の説明もついでに見とけ。
0281nobodyさん
2005/03/24(木) 02:41:20ID:03HxTlZF<input type="button" value="a" onclick="javascript:a_check();">
<input type="button" value="b" onclick="javascript:b_check();">
javascriptのa_check()関数b_check()関数でそれぞれ簡単な
問い合わせ等をした後にOKならdocument.form.submit()で
PHPスクリプトに飛ばしてます。
で$_POSTで入力項目の値は取れるのですが、どちらのボタンが押されたか
判別出来ませんでした。ボタンにname属性を指定しても渡りません。
何か良い方法はあるでしょうか?お願いします。
0282nobodyさん
2005/03/24(木) 02:48:48ID:???<input type=hidden name=hoge>
を用意して、JavaScriptで値を渡してからform.submit()している。
面倒なんだけどね。
0284nobodyさん
2005/03/24(木) 03:08:48ID:???function a_check(){
if( ok ){ return true; }
else{ return false; }
}
<input type="submit" name="a" value="a" onclick="return a_check()">
てのもありかと。
0285nobodyさん
2005/03/24(木) 03:15:10ID:???これってJavaScriptでエラーが発生したら問答無用でsubmitされるんだよね
どうせならフェイルセーフにして欲しいなぁ
0286nobodyさん
2005/03/24(木) 03:21:04ID:???submitを用意すると、textのところでEnterキーを押されると飛んでしまうからヤダ。
当然onclickのところも処理されないし。
0287284
2005/03/24(木) 03:55:09ID:???鯖へのsubmit(意図しないものも含めて)をなるべく減らしたい場合には不適ですね。
0288281
2005/03/24(木) 04:30:41ID:???自分のほとんどjavascriptの質問でしたねすいません・・・
0289nobodyさん
2005/03/24(木) 10:48:10ID:RDA5se46やり方でやるのでしょうか?
0290nobodyさん
2005/03/24(木) 11:27:27ID:???0291nobodyさん
2005/03/24(木) 13:00:58ID:qO9+zWTj内容は↓とよく似ていて、php.ini や、configure の条件もほとんど同じなのですが、
この問いにレスがありません;;
ttp://ns1.php.gr.jp/pipermail/php-users/2005-March/025317.html
さらに、ファイルの末端行について↓のようなエラーが出て、ページが表示されません。
Parse error: parse error, unexpected $ in filename on line 316
{ } が閉じていないとこのエラーが出るようですが、全てのスクリプトは移行前は動いていましたし
括弧のチェックも行いましたが、何が悪いのかわかりません。
何かヒントか勘所ありましたらお教えいただければ幸いです。
よろしくお願いいたします。
0292nobodyさん
2005/03/24(木) 15:26:01ID:???dumpして、縦罫を区切り文字に変換、
行頭、行末の区切り文字を削除
残りの罫線文字を全て削除。
で、csvデータの出来上がり!
0294nobodyさん
2005/03/24(木) 18:06:13ID:???受け渡しが上手くいきません。
(画面)推移は[chageAction]->[chageView]->[resultAction]->[resultView]の
各Actionでデータを加工しています。加工したデータのオブジェクトを
[changeAction]から[resultView]まで持ち回したいのですが、[changeView]->[resultAction]へデータが渡りません。
以下の状況です。
[chageAction]で$request->setAttribute['datalist', $datalist];
[chageView]では受け渡しは何もしていません。
[resultAction]で$datalist = $request->getAttribute['datalist'];
とすると、print_r($datalist)は出力されません。(empty($datalist)がTrueです)
[changeView]でprint_r($request->getAttribute['datalist']);するときちんと表示されます。
また、$requestの利用をやめて単純にセッションで持ち回してみると
[changeAction]で、$_SESSION['datalist'] = $datalist;
[changeView]で、print_r($_SESSION['datalist'])は正しく表示されます。
[resultAction]で、print_r($_SESSION['datalist'])とすると
__PHP_Incomplete_Class Object( [__PHP_Incomplete_Class_Name]といった
失敗したクラスオブジェクトという表示がついたデータ(中身は正しそうです)
が表示されます。直前の[changeView]までは正しく表示されているのに
直後の[resultAction]で失敗していると言われます。
何か、怪しいところ、解決のヒントをいただけないでしょうか。
よろしくお願いいたします。
0295294
2005/03/24(木) 18:09:02ID:???あと、sage質問してしまいました。重ね重ねすみません。
0296nobodyさん
2005/03/24(木) 19:20:48ID:vhVEynDRpearのSpreadSheetExelWriter使えば?
0298nobodyさん
2005/03/24(木) 20:16:47ID:???session_start();
session_unset();
session_destroy();
echo "<form method=POST action=test.php>\n";
echo "<input type=checkbox name=checkbox[] value=test1>test1<br>\n";
echo "<input type=checkbox name=checkbox[] value=test2>test2<br>\n";
echo "<input type=checkbox name=checkbox[] value=test3>test3<br>\n";
echo "<input type=submit value=OK>\n";
echo "</form>\n";
-----------------------test.php-----------------------
session_start();
$checkbox = $_POST['checkbox'];
if (!isset($checkbox)) {
$checkbox = $_SESSION['checkbox'];
}
else {
$_SESSION['checkbox'] = $checkbox;
}
echo "<form method=POST action=" . $_SERVER['PHP_SELF'] . ">\n";
echo "<select name=name>\n";
for ($i=0; $i<count($checkbox); $i++) {
echo "<option value=" . $checkbox[$i] . (($checkbox[$i] == $_POST['name']) ? ' selected' : '') . ">" . $checkbox[$i] . "\n";
}
echo "</select>\n";
echo "<input type=submit value=GO>\n";
echo "</form>\n";
--------------------------------------------------
自鯖だとGOボタンを押してもプルダウンメニューが空っぽにはならないのですが
www.tripod.lycos.co.ukでテストしてみたらGOボタンを押すと同時に空っぽになってしまいました。
セッションの使い方間違っているのでしょうか?
0300nobodyさん
2005/03/24(木) 21:29:55ID:6QAMAmhS多次元配列で、指定したキーの要素が存在するかどうか
チェックする時、キーの範囲を絞って検査する方法
はどうやってますか?
幾つかサンプルを探してみましたが、1次元配列の例しか
見当たりません。
array_key_existsやissetを使うことになると思いますが
どうでしょう?
0301nobodyさん
2005/03/24(木) 21:33:01ID:???0302nobodyさん
2005/03/24(木) 22:00:15ID:???考えてるイメージどおりでいいんでね?
絞った範囲を逐次舐めていくか、一旦範囲を切り取った
別の配列用意して、そこを見ても良いと思うけど。
0303nobodyさん
2005/03/24(木) 22:22:14ID:6QAMAmhSレスありがとうです。
issetやarray_key_existsの第二パラメータを
[]付きで指定するとエラーになりますね。
やはり別の配列に切り取って、上記関数を
使う方法しかないでしょうか。
0304nobodyさん
2005/03/24(木) 22:29:27ID:???とか普通にやるけど?
0305nobodyさん
2005/03/24(木) 22:46:10ID:6QAMAmhSすみません、isset内の$Arr['hoge']は多次元配列でしょうか?
0307nobodyさん
2005/03/24(木) 22:53:52ID:???if(isset($Arr['hoge']['fuga'])){
とかも念の為確認したけど普通に通るね
4.3.4で確認したが、レン鯖とかでもエラーでた覚えはないな
0308nobodyさん
2005/03/24(木) 22:56:24ID:???では、'hoge'や'fuga'の部分を配列変数で指定したらどうでしょうか?
当たり前かもしれませんが、教えてください。
0309nobodyさん
2005/03/24(木) 23:09:46ID:???preg_replaceのパターンに配列使うみてーなん期待してんのなら
無理じゃね?そういう引数とれる関数じゃ元からねーだろ
0310nobodyさん
2005/03/24(木) 23:24:39ID:???登録の時は普通に配列変数を指定できるはずですが、
キーが存在するかどうかのチェック時に指定できない
となると、PHPの配列というのは、用途が限定されてきますね。
存在しないキーを指定して値を取り出そうとすると、
ランタイムエラーになるのですよね?
0311nobodyさん
2005/03/24(木) 23:27:47ID:???ttp://www.php.net/manual/ja/types.comparisons.php
0312310
2005/03/24(木) 23:35:17ID:???私はPHPを詳しく理解してないですけど、
あなたは私が何を言いたいのか理解していない気がします。
0313nobodyさん
2005/03/24(木) 23:42:31ID:???限定も何もPHPがどーのこーのの前に配列が何か良くわかってないんじゃない?
指定の仕方がおかしいっつーてるだけの話よ
別に存在しないKeyの連想配列参照したって構文エラーは出んぞ
0314310
2005/03/24(木) 23:56:46ID:???無効なキーを指定した場合、返ってくる値はNULLでしょうか?
マニュアルで配列のところを見てみましたが、どこに書いてあるのでしょう?
聞いてばかりですみません。
0316nobodyさん
2005/03/25(金) 00:22:20ID:???0317nobodyさん
2005/03/25(金) 02:48:05ID:????? ?? ?? ?? ???? ????
??:: ??
???:: ? ??
????::?:: ???????? ???? ? ????
??????::?::: :::?::??? ? ?
???????::?::?::::: :: :: ::::?::????????? ???
?????????::?:::?:::::::?::??????????? ???
0318nobodyさん
2005/03/25(金) 07:14:19ID:???正確には存在しないキーの配列を普通に参照すると
undefind indexでNoticeレベルのエラーは発生してる
(デフォルトのphp.iniでは確かNoticeレベルのエラーはレポーティングされない)
ただしissetで調べる時はNoticeも発生しない
存在しないキーの変数を無理矢理使おうとすると
NULL補完されてそのまま実行される
$array = array();
$hoge = $array['unknown'];
だと$hogeはNULL
でもあくまでPHPが補完してくれるだけであって
ちゃんとキーが存在するか調べてから
参照するコードを書く方がもちろん良い
話を元に戻して
多次元配列でキーの存在を調べるなら
$list = array(調べるキーのリスト);
foreach ($list as $key) {
if (isset($array['hoge'][$key])) {
・・・
}
}
あとはまあ応用で
0319nobodyさん
2005/03/25(金) 10:40:31ID:???0320294
2005/03/25(金) 10:48:05ID:TwEbcJkKどなたかアドバイスいただけないでしょうか。
0321nobodyさん
2005/03/25(金) 12:01:06ID:???chage〜とchange〜はtypoですか?
あと、文系っぽい質問の書き方を改めた方がいいと思った。
0322nobodyさん
2005/03/25(金) 12:59:58ID:???setAttribute[〜]、getAttribute[〜]は 見るからに怪しい。
0324nobodyさん
2005/03/25(金) 17:37:14ID:???0325294
2005/03/25(金) 17:53:55ID:???>321
typoです。文系っぽいというのはすみません。よくわかりません。
>322,323,324
typoです。わざとじゃありません。()です。でなきゃこの状況以前のエラーになります。
[]なしで書いてみたらもっとわかりづらかったです。
typoがおおくてすみません。なるべく状況をわかってもらえるように
書けば書くほどわかってもらえなくなります。
見直しはしてるのですが、気持ちの方があせってます。
わかりずらい書き方ですみませんが、どなたかアドバイスいただけないでしょうか。
よろしくお願いいたします。
0326nobodyさん
2005/03/25(金) 17:59:29ID:???ソースは基本的にコピペ。投稿する前には再確認しろよ。
0329294
2005/03/25(金) 18:29:56ID:???「typoです。
()と[]の区別がつきません…」
とかのネタは実は覚悟してたんですが、意表をつかれました。
わかりづらい書き方についてのアドバイスを拒否するわけではありませんが
できましたら、その、変数(オブジェクト)の引き渡しについても
アドバイスいただけないでしょうか。
0332294
2005/03/25(金) 18:57:30ID:???>>331
いえ、そうしていいならそうさせてください。上手くかけるかどうかわかりませんが。
今夜もう一度書きます。お目汚しすみません。
0334294
2005/03/25(金) 21:57:21ID:???あの、すみません。本当に4のどこに該当したでしょうか。
再度書こうとしているのですが、うまくまとまりません。
あと、他の方からのご指摘ですが文系っぽい文章もよくわかりません。
自覚がないのは手に負えないとは思うのですが…。
なんだか簡潔に書こうとすると省略が増えて、「最初から言えよ」と
言われそうです。コードを中心に助詞とかはぶいて書くと(理系っぽい?)
傲慢な感じです。(「コード見てわかれよ」というような)
結局typo部分を修正する程度になってしまうかもしれません。
といいつつもうすぐイラン戦なので、明日になるかもです。
typoについてご指摘いただいた方には、感謝してます。少なくとも
わかりづらい文章を読んでいただいたので。
>>333
もっと意表を衝かれました。
0335nobodyさん
2005/03/25(金) 22:00:57ID:???どっかにうpした方がよくなくって?
フレームワークスレ(Phrameと銘打ってあるが多分mojaviでも良かったかと)もあるけど、
あの書き方だとレス付かない希ガス
0336nobodyさん
2005/03/25(金) 22:19:34ID:???0337nobodyさん
2005/03/25(金) 22:30:53ID:???> コードを中心に助詞とかはぶいて書くと(理系っぽい?)
> 傲慢な感じです。(「コード見てわかれよ」というような)
「コード見ずにわかれよ」よりはマシ。
ソースをまるまるうpして、「動きません」だけ言われた方が解決出来る。
0338nobodyさん
2005/03/25(金) 22:37:42ID:???元理系で文系卒業したオレに一言言わせてくれ!
理系とか文系とかいう問題では無い!
人の問題なのですよ。
0340山田
2005/03/26(土) 01:05:40ID:FsI5PzWCプログラム自体は他のPCで動いたので大丈夫だと思います。
動かないPCはサーバ機として使っているものでwindows server 2003を使っています。
PHPを動かすと
Warning: mb_send_mail(): Failed to connect to mailserver at "192.168.1.100" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in・・・
というようなエラーが出ます。
同じようにphp.iniでSMTPをプロバイダのSMTPにしてもエラーメッセージが
192.168.1.100の部分がプロバイダのSMTPサーバ名に変わるだけでした。
何か問題があるとしたらどこがいけないのでしょうか?
0341nobodyさん
2005/03/26(土) 01:31:23ID:???逆に言うと、SMTP接続を受け付ける鯖がなければメールを送信できません。
192.168.1.100にメール鯖が無ければ当然そのようなエラーが起きます。
プロバイダのメール鯖を使うとしても、最近はPOP before SMTP等色々な制約があります。
そのWeb鯖が本番環境なら管理者に相談してみましょう。
0342nobodyさん
2005/03/26(土) 01:32:57ID:???> が、オブジェクトの受け渡しが上手くいきません。
> 画面推移は A->B->C->D
> オブジェクトをAからDまで持ち回したいのですが、B->Cへデータが渡りません。
> 状況は以下のとおりです。
> A
> $request->setAttribute['datalist', $datalist];
> B
> print_r($request->getAttribute['datalist']);
> 出力されます。
> Bでは受け渡しは何もしていません。
> C
> $datalist = $request->getAttribute['datalist'];
> print_r($datalist)
> 出力されません。
> $requestの利用をやめて単純にセッションで持ち回してみると
> A
> $_SESSION['datalist'] = $datalist;
> B
> print_r($_SESSION['datalist'])
> 出力されます。
> C
> print_r($_SESSION['datalist']);
> __PHP_Incomplete_Class Object( [__PHP_Incomplete_Class_Name]
> が出力されます。
> 何か、怪しいところ、解決のヒントをいただけないでしょうか。
> よろしくお願いいたします。
Bでも受け渡ししろ。ってことか?
0344山田
2005/03/26(土) 01:42:05ID:FsI5PzWC他のPC(windowsXP home)では同じプロバイダのSMTPサーバを指定したところ動きました。
そのためどこか設定がおかしいのかなと思ったんですが・・・
他には考えられる問題というのはないでしょうか?
0345山田
2005/03/26(土) 01:57:41ID:VYgvgifgどこかの設定のせいで25番ポートが遮断されているんですか?!
可能性としてどこがありえますか?
0346nobodyさん
2005/03/26(土) 02:00:01ID:???翻訳thx.
>>294
それみると、$datalistの型が気になってくるわけだが。
classだとしたら、ABでは定義されていて、Cでは定義されていない。とか。
クラスの定義はセッション開始前になければならない。requireなりincludeなりするのも前。
mojaviは使ったことないから知らん。
というか、「__PHP_Incomplete_Class Object」でぐぐれば答えがあるんだがな。
んで、何が見にくいかって、コードが本文中にメリ込んでるあたり。
どこがコードでどこが本文かわからん。
一旦左脳つかってから右脳に渡すとか面倒だ。
0347346
2005/03/26(土) 02:01:11ID:???>classだとしたら
クラスだろうな。 寝ぼけたこといってすまん。
0348nobodyさん
2005/03/26(土) 06:11:57ID:???> 翻訳thx.
シヤ−プの翻訳機だ。
脳内厨−>エスパー変換機能バンドル版
めいどいんシナ(海賊版)
入手困難。
0349nobodyさん
2005/03/26(土) 07:50:30ID:t6rEtfl2試したんですが出来ないみたいで。。
php5は出来ますか?
0350山田
2005/03/26(土) 08:02:13ID:VYgvgifg25番ポートは開放されています。
しかし設定によって遮断されているというのはありえるのでしょうか?
0351nobodyさん
2005/03/26(土) 08:26:24ID:???エラーメッセージでググッてみた?いろいろ出たよ。例えばこれ。
マルチバイト関数を使う場合以下の設定をします。
まずPHP.iniを開き編集します。
include_pathを探し自分の環境に合わせます
include_path = ".;c:/php/includes"
※例はPHPをc:\phpにインストールした場合
;extension_dirを探し;を外しコメントアウトを解除します。
さらにパスを自分の環境に合わせます
extension_dir ="c:/php/extensions"
※例はPHPをc:\phpにインストールした場合
マルチバイト関数モジュールを組み込みます。
;extension=php_mbstring.dllをさがし
;を外しコメントアウトを解除します。
PHP.iniを保存しApacheを再起動します。
※モジュール組み込みの場合
有効になったか確認する
phpinfo();
と記述したphpを開きmbstringの設定が表示されることを確認してください。
なければ設定が間違っています。
PHP.iniでデフォルト言語とデフォルト文字コードを設定しておくことができます。
;; デフォルトの言語を日本語にする
;mbstring.language = Japanese
;; 内部エンコーディングをEUC-JPに設定
;mbstring.internal_encoding = EUC-JP
それぞれ;mbstringから;を外してコメントアウトを解除し保存します。
mbstring.internal_encodingはPHPの文字コードを指定しています。
Shift-JISで記述されたPHPでマルチバイト関数を使うなど
設定した文字コード以外の文字コードや設定した言語以外の言語を利用する場合
PHP内で以下の関数を使い指定しておきます。
mb_language("Japanese");//言語指定
mb_internal_encoding("SJIS");//文字コード指定
0352nobodyさん
2005/03/26(土) 08:35:51ID:???試したコードを晒してみ。話はそれからだ。
0353山田
2005/03/26(土) 09:07:31ID:VYgvgifgぐぐってみてその設定はすでに完了しています。
php.iniファイルは他のPC(メール送信PHPが動いたPC)で使っていたものを
持ってきて環境設定したので大丈夫だと思うんですが・・・
0354294
2005/03/26(土) 10:08:37ID:???ありがとうございます。すごくわかりやすいです。
Bでの受け渡しも試してみましたがCには渡りませんでした。mojaviを使われている方が
居ないようなので、フレームワークスレへ行きます。
342さんの文章使わせていただきます。
>>346
オブジェクトの受け渡しに宣言が必要でしょうか。
session_start()等はmojaviが行ってる部分で何とも言えませんが
データの引き渡しを確認するためのものです。
アドバイスありがとうございました。
>>349
PHP4はオーバーライドはできますが、オーバーロードはできません。
PHP5は使ってないのでしりませんが、ぐぐれば情報出そうに思います。
>>353
動作したPCと動作しないPCと同じネットワーク環境でしょうか。
(内と外それぞれのIPアドレスとかHOST名とか…)
環境が変われば、SMTPサーバの設定が変わる可能性がありますよ。
(同じ設定ファイルでは動作しなくなるということです。)
では、もう50以上前の番号294はこれにて潜行します。
別スレでもひとつ穏便によろしくお願いしますね。
ありがとうございました。
0356PATH_INFO
2005/03/26(土) 10:44:38ID:RieTtHlGhttp://www.example.com/index.php
ディレクトリインデックスのファイルを index.php に指定しているので
http://www.example.com/ でもアクセスできます。
このスクリプトで PATH_INFO を使って様々なページを提供しています。
http://www.example.com/index.php/Page1
http://www.example.com/index.php/Page2 などなど
が、index.php が必ず見えるのは不細工なので
http://www.example.com/Page1
http://www.example.com/Page2
のようなURLでアクセスできるようにしたいと思っています。
Apache 2 を使っているのですが、どのように設定すればいいのでしょうか?
0357nobodyさん
2005/03/26(土) 11:01:27ID:???0358nobodyさん
2005/03/26(土) 11:08:00ID:qY7QRnsDhttp://tools.live365.com/cgi-bin/api_station_status.cgi?member_name=bcname&password=bcpassword&action=listeners
上記記CGIにアクセスすると下記ようにテキストでのXML形式のデータが出力されます。
<?xml version="1.0" encoding="ISO-8859-1" ?>
- <LIVE365_API_STATION_STATUS_CGI>
<Code>0</Code>
<Reason>Success</Reason>
<Stream_status>OK</Stream_status>
<Current_listeners_reg>35</Current_listeners_reg>
<Current_listeners_pm>2</Current_listeners_pm>
<Current_listeners>37</Current_listeners>
<Rating>8.73</Rating>
</LIVE365_API_STATION_STATUS_CGI>
そしてこれをPHPから読み取り、<Current_listeners>37</Current_listeners> の値だけPHPに出力したいのですがどのようにすればいいのでしょうか?
0359nobodyさん
2005/03/26(土) 11:15:24ID:???・対象URLからXMLデータを取得
・XMLをパース
・<Current_listeners>のValueを出力
_以上_
0360359
2005/03/26(土) 11:18:38ID:???・「file」で
・「xml」で
・「echo」で
幸れ。
_以上_
0361nobodyさん
2005/03/26(土) 11:20:04ID:qY7QRnsD>>538-539
thanks a lot!!
0362nobodyさん
2005/03/26(土) 12:35:36ID:???PHPの話ではないようなんですが、この方法は私も気になります。
どなたか知ってる方いれば・・・と思うんですが。
いないようならこちらに誘導しときます・・・。
人頼りマンセー
【俺たちゃ裸が】Apache質問スレ【ユニホーム♪】
http://pc8.2ch.net/test/read.cgi/mysv/1103367974/
0363nobodyさん
2005/03/26(土) 12:43:53ID:???たぶんmod_rewriteなら出来るとおもうよ。
0364358
2005/03/26(土) 12:53:31ID:qY7QRnsDエラーが出てしまいます。
ファイルの指定がおかしいみたいなのですが
function characters ($parser, $text) {
global $tmp;
$tmp = $text;
}
function startElement ($parser, $name, $attrib) {
}
function endElement ($parser, $name) {
global $tmp, $Current_listeners;
switch ($name) {
case "Current_listeners":
$Current_listeners= $tmp;
break;
default:
break;
}
}
$xml_parser = xml_parser_create ();
xml_parser_set_option ($xml_parser, XML_OPTION_CASE_FOLDING, false);
xml_set_element_handler ($xml_parser, "startElement", "endElement");
xml_set_character_data_handler ($xml_parser, "characters");
$fp = file (http://tools.live365.com/cgi-bin/api_station_status.cgi?member_name=*****&password=*****&action=listeners, 'r');
while ($filedat=fread($fp, 4096)) {
if (!xml_parse($xml_parser, $filedat, feof($fp))) {
}
}
fclose ($fp);
xml_parser_free ($xml_parser);
echo "$Current_listeners";
0365358
2005/03/26(土) 13:07:15ID:qY7QRnsDCGIのアドレスに無理やり拡張子 &.xml と入れても問題なかったので
下記のようにFILEだけならちゃんと動きました
バースがおかしいようです
<?php
$lines = file ('http://tools.live365.com/cgi-bin/api_station_status.cgi?member_name=****&password=****&action=listeners&.xml');
// 配列をループしてHTMLをHTMLソースとして表示し、行番号もつけます。
foreach ($lines as $line_num => $line) {
echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br>\n";
}
// 他の例として、Webページを文字列に取り込みます。file_get_contents()も参照してください。
$html = implode ('', file ('http://tools.live365.com/cgi-bin/api_station_status.cgi?member_name=eurobeat&password=07075710&action=listeners&.xml'));
?>
0366358
2005/03/26(土) 13:44:52ID:qY7QRnsD以下で出来ました
<?php
function characters ($parser, $text) {
global $tmp;
$tmp = $text;
}
function startElement ($parser, $name, $attrib) {
}
function endElement ($parser, $name) {
global $tmp, $Current_listeners;
switch ($name) {
case "Current_listeners":
$Current_listeners= $tmp;
break;
default:
break;
}
}
$xml_parser = xml_parser_create ();
xml_parser_set_option ($xml_parser, XML_OPTION_CASE_FOLDING, false);
xml_set_element_handler ($xml_parser, "startElement", "endElement");
xml_set_character_data_handler ($xml_parser, "characters");
$fp = fopen ('http://tools.live365.com/cgi-bin/api_station_status.cgi?member_name=****&password=****&action=listeners&.xml', 'r');
while ($filedat=fread($fp, 4096)) {
if (!xml_parse($xml_parser, $filedat, feof($fp))) {
}
}
fclose ($fp);
xml_parser_free ($xml_parser);
echo "$Current_listeners";
?>
■ このスレッドは過去ログ倉庫に格納されています