【PHP】下らねぇ質問はID出して書き込みやがれ 104
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2011/02/14(月) 16:45:59ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 103
http://hibari.2ch.net/test/read.cgi/php/1295956018/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0070nobodyさん
2011/02/15(火) 19:45:26ID:???007170
2011/02/15(火) 19:49:31ID:???が恥をかくことになっちゃうけど
0072nobodyさん
2011/02/15(火) 20:44:41ID:???0073nobodyさん
2011/02/15(火) 21:23:29ID:???0074nobodyさん
2011/02/15(火) 22:09:48ID:???0075nobodyさん
2011/02/15(火) 23:19:58ID:Z0gRK6Gz$sth = $pdo->prepare("SELECT col_1,col_2 FROM hoge");
$sth->execute();
$result_1 = $sth->fetchALL(PDO::FETCH_COLUMN, 0);
$result_2 = $sth->fetchALL(PDO::FETCH_COLUMN, 1);
とやると
$result_1はちゃんと配列が取れますが
$result_2は何もありません
カーソルが最後まで行ったからかと思うのですが
どうすれば$result_2にも配列を取れるでしょうか
これを書き足して新スレを立ててくださいね。
$result_2にも配列を欲しがる理由を教えてください。
0078nobodyさん
2011/02/16(水) 02:30:55ID:???PDOにはmysql_data_seekみたいな機能は無さそうだから無理っぽいね
普通に考えると、そういうときは
$result = $sth->fetchALL();
として、
$result_1に相当する部分は$result[n][0]で、
$result_2に相当する部分は$result[n][1]でアクセスするべきだと思う
0079nobodyさん
2011/02/16(水) 08:04:38ID:???> $result_1はちゃんと配列が取れますが
申し訳ないが、$sth->fetchALL直後の$result_1と$result_2をvar_dumpした結果を教えてくれないか?
0081。
2011/02/16(水) 12:24:32ID:???$result_2 = $sth->fetchALL(PDO::FETCH_COLUMN, 1);
の前でもう一回
$sth->execute();
を実行して下さい。
008275
2011/02/16(水) 12:47:11ID:???釣りって言葉はありえなくね
ということで
var_dumpすると$result_2は空でした
再度executeするよりは二次元配列から取り出す方がいいかな
それでやってみます
ありがとうございました
0083nobodyさん
2011/02/16(水) 13:12:31ID:bzYdcF36$int = $_REQUEST[int];
$caption = $value->item[$int]->title;
では表示されず、
$int = "0";
$caption = $value->item[$int]->title;
でなら表示されるという不具合に悩まされています。
$int = $_REQUEST[int];
echo $int;
とすると数字が 1 などと表示されるのですが
$caption = $value->item[$int]->title;
では表示されません。
何故でしょうか?
0084nobodyさん
2011/02/16(水) 13:13:37ID:???0085nobodyさん
2011/02/16(水) 13:30:24ID:???0087。
2011/02/16(水) 13:34:59ID:???0089。
2011/02/16(水) 13:42:50ID:???Notice: はでるけど $_REQUEST[int]; でも ?int=1 で 1が取れるんだよな。
まず、 var_dump( $value->item ) を確認してください。
itemに 0はあるけど 1ないとかそういう単純な話かも。
0091nobodyさん
2011/02/16(水) 15:56:11ID:???/ ,――――-ミ
/ / / \ |
| / ,(・) (・) |
(6 つ |
| ___ | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| /__/ / < なわけねぇだろ!
/| /\ \__________
009283
2011/02/16(水) 17:10:14ID:bzYdcF36item[1]などはちゃんとあるのですが
$_REQUEST[int]からだと表示されません。
GETで値を渡しているのですがもっといい方法があるんでしょうか。
0093nobodyさん
2011/02/16(水) 17:32:14ID:???0094nobodyさん
2011/02/16(水) 17:32:22ID:0JcE1KEJ【PHPのバージョン】5.1
【連携ソフトウェア】無し
【質問内容】 正規表現でマッチした(<title>〜</title>)以外の所の置き換えをしたいのですが判定方法をどうすればいいか考えてます。
$text = "hogehoge<title>title</title>mogemoge";
このhogehogeやmogemogeにあたる部分のみを置き換えしたいのですが方策が思いつかず困ってます。
流れとしてどうすればいいかアドバイスもらえないでしょうか。
009583
2011/02/16(水) 17:33:32ID:bzYdcF36009783
2011/02/16(水) 17:46:35ID:bzYdcF36しかし、試しに
$int = $_GET[int];
$int = $int+1;
こうしてみると$caption = $value->item[$int]->title;が表示されます。
これはどういう事でしょうか。
009883
2011/02/16(水) 17:49:13ID:bzYdcF36$int = $int+1;
$int = $int-1;
これで表示されるのでとりあえずこれで行ってみます。
しかし激しく格好わるいですね。
009994
2011/02/16(水) 17:59:12ID:0JcE1KEJありがとうございます。
preg_split("/\<title\>(.*?)\<\/title\>/", $text)
としてhogehogemogemogeを取り出す事は出来たんですが、置き換え後にどう元に戻せばいいのかと考えてます。
作業前:hogehoge<title>title</title>mogemoge
を置き換えて
作業後:example<title>title</title>example
としたいわけです。
preg_splitで取り出してpreg_replaceで置き換えたあとにどうすれば作業後の結果に戻せるのか方策が思いつかないです・・・。
0100nobodyさん
2011/02/16(水) 18:01:48ID:vtmLK1PS$query = mysql_query($sql);
このようなSQL文のクエリからmysql_fetch_name($query,0)のようにして
フィールド名を取得しようとしたのですが、ASで変換している箇所は取得できません。
どうやって変更したフィールド名を取得すればいいのでしょうか?
0101nobodyさん
2011/02/16(水) 18:09:32ID:???コードがミスっていました。スレ汚しすみません。
0102。
2011/02/16(水) 18:37:04ID:???$text = preg_replace( "/.*(?=<title>)/", "前",$text,1);
$text = preg_replace( "/(?<=<\/title>).*/", "後",$text,1);
0104nobodyさん
2011/02/16(水) 19:11:33ID:xv6q7uMH【PHPのバージョン】5.1.6
ob_get_level()でレベルを取得すると2となります。
クライアントに即座にデータをおくりたいのですが、
ob_get_level()で1がかえってくるようにするには
どのようにすればよろしいでようか?
0105nobodyさん
2011/02/16(水) 19:12:24ID:???試してないけど
preg_replace("/\<title\>(.*?)\<\/title\>/", "example<title>$1</title>example" , $text)
0110nobodyさん
2011/02/16(水) 19:24:14ID:???ob_get_levelの意味はわかってるよね
ob_startを2回したからネストレベルが2になったんだろ
ob_end_flushやob_end_cleanでバッファリングを1段終了できるよね
ていうか何のためにob_startしてるか理解してるの?
0112107
2011/02/16(水) 19:34:13ID:???ありがとう
>>110
すみません。意味がやっとわかりました。
おかげで期待通りの動きになりました。
ありがとうございました。
011394
2011/02/16(水) 19:44:25ID:0JcE1KEJ4つ目の引数に1って指定できるの知りませんでした。
正規表現も勉強になります。
実際のデータにはエンティティ化された文字がはいっててtitileタグ内はそのままで
エンティティ化された部分だけを置き換え出来るようにしたいと考えてます。
<""><title>title</title><"//">
を
<""><title>title</title><"//">
としたいので<title>の前の部分の内容によって置き換え条件を変更したいわけです。
explodeみたいなので配列に分割できればラクそうだったんですが。
[0]=> <""> [1]=> <title>title</title> [2]=> <"//">
こんな風に出来れば指定部分だけそのままで配列0と2だけ置き換えしてimplodeでもすれば出来るんじゃないかと。
こういうことが出来るのかどうか、代替手法があるのかどうかちょっとまだ見えてないんですが。
0114nobodyさん
2011/02/16(水) 20:01:42ID:???0115nobodyさん
2011/02/16(水) 20:04:22ID:???コマンドプロンプトからPHPを実行した場合、
後者のほうがパフォーマンスはいいのですかね?
0116nobodyさん
2011/02/16(水) 20:06:43ID:???0118nobodyさん
2011/02/16(水) 20:08:10ID:???if (preg_match('#(.*?)(<title>.*?</title>)(.*)#i', $text, $match)) {
$text = str_replace('"', '"', $match[1])
. $match[2]
. str_replace('"', '"', $match[3]);
}
echo $text;
0119nobodyさん
2011/02/16(水) 20:15:59ID:???0120nobodyさん
2011/02/16(水) 20:56:51ID:DO+wFNocどうするのがスタンダードですかね?
0122nobodyさん
2011/02/16(水) 22:47:21ID:DO+wFNocEUC-JPかUTF-8ってのは分かってるんですけど
それでもどっちがスタンダードかなと思いまして。
あと、改行コードはCRLFとLFどっちですかね?
0123nobodyさん
2011/02/16(水) 23:03:20ID:???そうすりゃ文字コードで悩む事は無くなる
0125nobodyさん
2011/02/17(木) 10:29:53ID:T4c0Fhk0json_encode json_decode を使えば簡単なんですがメモリ消費が激しく
今はしのげるものの、今後増え続ける変換処理でメモリ不足になります。
もっと動作的にもメモリ的にも軽く使う方法があれば教えてください。
0126nobodyさん
2011/02/17(木) 10:44:17ID:???クソ深いネスト構造だとあまり効果が見込めないが
http://php.net/manual/ja/class.splfixedarray.php
具体的なデータの構造と用途を披露したら別のアプローチも出るんじゃね
0127nobodyさん
2011/02/17(木) 10:51:57ID:???そんな手抜きするやつはビンタだな
0128。 ◆oDupeixhZv52
2011/02/17(木) 11:17:46ID:???serializeとかvar_exportでも同じだろうから、
配列読みながらファイルに書き込むのを作るしか。
0129nobodyさん
2011/02/17(木) 12:12:10ID:DXaPju3P0130nobodyさん
2011/02/17(木) 12:40:14ID:fkwoRsvLrequire "config.php";
として呼び出されているconfig.phpの中身が丸ごと画面に出力されていました
で、よくみるとconfig.phpには
<?php と ?> の、頭とお尻のphp宣言がない状態でした。
?>を書かないというのは聞いたことありますが、<?phpを省略するなんて可能なんですか?
結局両方とも書き足したら動くようになったんですが、「<?phpを書かなくても動くようにする」には
どうしたら良いんでしょうか?
0131nobodyさん
2011/02/17(木) 12:51:59ID:???0132。 ◆oDupeixhZv52
2011/02/17(木) 13:10:14ID:???0133nobodyさん
2011/02/17(木) 13:12:17ID:guOwmBH1require "config.php";
って書いただけで、それが書かれたファイルがある場所とは別の
ライブラリ専用フォルダの中から探してきてくれるようにするにはどうすればいい?
0134。 ◆oDupeixhZv52
2011/02/17(木) 13:15:14ID:???http://www.php.net/manual/ja/ini.core.php#ini.include-path
0135nobodyさん
2011/02/17(木) 13:57:09ID:???どうもです。アプリケーションの書き間違いだったんですかね。
不具合のレポートとか調べてみることにします。ありがとう
0136nobodyさん
2011/02/17(木) 14:37:52ID:hXN9jln4【PHPのバージョン】5.1.6
【連携ソフトウェア】
【質問内容】
実行されているPHPのプログラムが
CLIモードで動いているかどうかを
取得する方法はありますか?
0137。 ◆oDupeixhZv52
2011/02/17(木) 14:51:12ID:???0138nobodyさん
2011/02/17(木) 14:53:27ID:uc0VVbVbecho strpos($a, '3');
この場合の結果は2となりますが$aに含まれる3の場所全部を探したい場合はどうすればいいですか?
0140nobodyさん
2011/02/17(木) 15:09:53ID:???$b = array();
for($i = 0; $j = strpos($a, '3', $i); $b[] = $j, $i = $j + 1);
var_dump($b);
0141。 ◆oDupeixhZv52
2011/02/17(木) 15:17:18ID:???http://php.net/manual/ja/function.strpos.php に
strposallってサンプルがあるよ。
0142nobodyさん
2011/02/17(木) 20:01:49ID:srZURUorpreg_match(): Compilation failed: range out of order in character class
っていうエラーが消えません。
原因は他にあるんでしょうか?
0143nobodyさん
2011/02/17(木) 20:04:09ID:???0146nobodyさん
2011/02/17(木) 20:21:02ID:???PHPのソース中の改行コードは空白文字と一緒だから本当にどっちでもいい。
でもまぁWindowsならCRLFにしとけ。
0149nobodyさん
2011/02/17(木) 20:28:52ID:???1 自分を劣ったものとしていやしめること。へりくだること。「そんなに―する必要はない」
2 いやしめて見下すこと。また、そのさま。
「自修の事を甚だ―なる田地に落ち沈ましむるなり」〈中村訳・西国立志編〉
0151nobodyさん
2011/02/17(木) 21:25:59ID:fkwoRsvL------
apacheのバーチャルホストでwww_example1_comとwww_example2_comの2つを運用していて、
phpのinclude_pathを以下のように定義しようとしました
1)両方のサイトで共通して使うパスは、php.iniのinclude_pathで設定
例:PearやFrameworkのライブラリへのパス
2)それぞれのサイトで使う固有のパスは、httpd.confの<Virtualhost>部分で設定。
例:利用DBのテーブル名などconfigファイルへのパス
php_admin_value include_path "/var/www/example1/application:/var/www/example1/php_libs/config"
でも、実際に動かしてみたらうまくいかず、こんなエラーが出ます。
PHP Fatal error: require_once() [<a href='function.require'>function.require</a>]: Failed opening required
'Zend/Controller/Front.php' (include_path='/var/www/example1/application:/var/www/example1/php_libs/config')
固有のinclude_pathは認識してるものの、共通のパスの方は認識してないってことでしょうか?
phpinfo();で表示されるinclude_pathは共通の方(php.ini)で指定してある方なんですが…
どうしたら良いのか、ご意見お願いします
-----
linux板では、1)のphp.iniの内容を2)のhttpd.confが上書きしてるからだと言われたんですが、
この2つは共存できないものなんですか?
そうだとすると、両方のサイトそれぞれの<virtualhost>宣言部分に全部まとめて書くしかないんでしょうか?
0152nobodyさん
2011/02/17(木) 21:47:13ID:???> phpinfo();で表示されるinclude_pathは共通の方(php.ini)で指定してある方なんですが…
www_example1_com
www_example2_com
それぞれでの phpinfo() で表示された値を教えてください。
まとめたり、略したりせずにお願いします。
0154nobodyさん
2011/02/17(木) 22:22:34ID:fkwoRsvLありがとうございます
www_example1_comでのphpinfo()は
include_path /var/www/example1/application:/var/www/example1/php_libs/config
www_example2_comでのphpinfo()は
include_path .:/usr/lib/php/PEAR:/usr/lib/php:/usr/lib/php/Smarty:/usr/lib/php/ZendFramework/library
httpd.confでは以下のようになっています
<VirtualHost *:80>
ServerName www.example1.com
DocumentRoot /var/www/example/html
php_admin_value include_path "/var/www/example1/application:/var/www/example1/php_libs/config"
</VirtualHost>
<VirtualHost *:80>
ServerName www.example2.com
DocumentRoot /var/www/example2/html
#php_value include_path ""
</VirtualHost>
php.iniは
include_path=".:/usr/lib/php/PEAR:/usr/lib/php:/usr/lib/php/Smarty:/usr/lib/php/ZendFramework/library"
<VirtualHost>ディレクティブでinclude_pathを指定してないexample2はphp.iniの通りに返してるようです
0155nobodyさん
2011/02/17(木) 22:46:16ID:qWpUfC6V(上書きできなきゃ困るでしょう?)
あきらめてサイト別に全部書いてさい。
ありがとう!
申し訳ないが確認させてください。
www.example1.com では、
include_path /var/www/example1/application:/var/www/example1/php_libs/config
を望んでいますか?
www.example2.com では、
include_path .:/usr/lib/php/PEAR:/usr/lib/php:/usr/lib/php/Smarty:/usr/lib/php/ZendFramework/library
を望んでいますか?
もしも、www.example1.com、www.example2.com それぞれで望んでいない include_path ならば、
それぞれで、何を望んでいるかを具体的に教えてもらえますか?
0157nobodyさん
2011/02/17(木) 22:55:50ID:???やっぱり上書きなんですね。諦めて全部書くことにします
どうもありがとう
>>156
えーと、教えてもらう側なのにそんなにへりくだられても妙な気分なんですが…
両方とも望んでますよ。
要するに、共通して使うシステムのinclude_pathをphp.iniにまとめて書いて、
個別に専用で使うinclude_pathを<virtualhost>ディレクティブに書きたいという
希望だったので。。
諦めて<virtualhost>ディレクティブに、専用・共通全てのinclude_pathを指定することにします
どうもありがとうございました
質問の意図を私が理解し切れなかったので、いろいと質問してしまいました。
解決の糸口が見つかって自分で試せる状況まで進めたことは幸あることです。
良い結果に感謝です!
0159nobodyさん
2011/02/17(木) 23:48:30ID:???差し出がましいようで心苦しいのですが、
実行するphpファイルに直接書き込むのが最も単純だと
私のような下々のものは考えるのですが、いかがでしょうか。
set_include_path()
0160nobodyさん
2011/02/18(金) 00:28:41ID:???0163nobodyさん
2011/02/18(金) 08:42:48ID:???0164nobodyさん
2011/02/18(金) 16:03:50ID:Mrnk7oLN【PHPのバージョン】5.1
【連携ソフトウェア】Eclipse Zendデバッガー XAMPP
【質問内容】
スレ違いだったらごめんなさい。
EclipseとXAMPPをつかって開発をしているんですが、
PHPをCLIで実行したときにXAMPPのPHPフォルダの
php.iniの設定を読み込んでくれません。
Zendデバッガーのtmp領域に作成される
php.iniを見ても、XAMPPのPHPフォルダのphp.iniの
内容とは異なるものができ上がっています。
CLIで動かしたときには元はどこのiniファイルを見ているのでしょうか。
わかる方がいらっしゃいましたら
よろしくお願いいたします。
0165。 ◆oDupeixhZv52
2011/02/18(金) 16:21:27ID:???http://php.net/manual/ja/configuration.file.php
0166nobodyさん
2011/02/18(金) 16:23:59ID:ZHHwRd0X【OS名】CentOS
【PHPのバージョン】5.1.6
【連携ソフトウェア】
【質問内容】
APIへのPOSTリクエストで手詰っています。
OAuthを利用した認証からGETでのデータ取得まではHTTP_OAuthを利用してできました。
しかし「Content-Typeをapplication/jsonでjsonデータをPOSTする」部分がどうしてもわかりません。
最終的には$consumer(HTTP_OAuth_consumer で作成)->sendRequest([API URL],$params,"POST");
という形で送ると考えているのですが、headerをどこに記述したらいいのか・・HTTP_REQUESTのsetHeader?いや$paramsの中に直接記述?などと様々な試行錯誤を繰り返したものの、結果は「400 Bad Request」のみです・・
1週間ほど格闘してもうお手上げなので、どなたかアイデアをお願いします。
0167164
2011/02/18(金) 17:11:37ID:Mrnk7oLNレスありがとうございます。
XAMPPのフォルダを見たのですが
php-cli.iniはありませんでした。
試しにC:\windowsの中に
php-cli.iniをつくってみたのですが、
これでも動きませんでした。
どこか他に見ているところがあるのでしょうか。。。。
0168nobodyさん
2011/02/18(金) 17:19:54ID:NY+ifgVH【PHPのバージョン】5.2.14
【質問内容】
PHP + SFTPでファイルを送信したいと考えています。
pecl ssh2のコンパイルが難しそうなので、PuTTY付属のplinkで何とかしたいのですが、
exec('plink -P ポート -l user -pw pass 11.11.11.11')
でログインした状態のplinkにメッセージを送る方法が分かりません。
何かよい方法があればご教示ください。よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています