【PHP】下らねぇ質問はID出して書き込みやがれ 91
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/12/08(火) 13:53:09ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 90
http://pc11.2ch.net/test/read.cgi/php/1258187482/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0115nobodyさん
2009/12/10(木) 23:17:13ID:jFiArudI【PHPのバージョン】php5.3.1
【連携ソフトウェア】-
【質問内容】--with-gdでインストールしようとすると、configureには通るのにmakeに失敗します。
行った手順(多少順不同)は、
yum install gd
yum install libpng-dev
ln -s /usr/lib/libpng.so.3.10.0 /usr/lib/libpng.so
ln -s /usr/lib/libjpeg.so.62 /usr/lib/libjpeg.so
ln -s /usr/include/xulrunner-sdk-1.9/png/png.h /usr/include/png.h
./configure --enable-mbstring --with-pear --with-mysql --with-gd --enable-zip --with-apxs2=/usr/local/apache2/bin/apxs --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib
で、configureは通るのにその後makeするとこんなエラーがでてmakeが中断します。
/tmp/php-5.3.1/ext/gd/libgd/gd_png.c:749: error: expected '{' at end of input
make: *** [ext/gd/libgd/gd_png.lo] Error 1
ぐぐってもこれといったヒットなし。
気になる点としては、最初に一度5.3.1を(GD無しで)インストール後、
5.2.1(やっぱりGDなし)にダウングレードしたということぐらい。
このダウングレードのときは、何も考えずに、
configure→make→make installしただけです。
なお、configureオプションで--with-gd --with-jpeg-dir=/usr/lib --with-png-dir=/usr/libを
はずすと問題なくmake終了します。
何か分かる方いらっしゃいましたら情報提供お願いします。
0116nobodyさん
2009/12/11(金) 00:06:46ID:aUDcqNwNメールを送りたいんですが
テンプレートエンジンとか、
手動でパースエンジン作るとか
そんなことせずに
お気楽にテンプレートしたい!!
と言うわけで、
メールの内容をtext/plainで返すスクリプトを作って、
それをプログラムで読み込んで出力するというスクリプトを作ったのだけど、
ネットを介さないとパースしてくれないので、
$content = file_get_contents("$protocol://$host:$port/$uri/../$filename",
false, stream_context_create($context));
こんなめんどくさいurlを生成して取得しないといけないの。
環境によって動かなくなりそうで怖いんだけど、
もっとシンプルにphpパースを介す方法ってないかな。
知っていたら教えてくださいよろしくお願いします。
0117nobodyさん
2009/12/11(金) 05:38:42ID:L/oJhkAJpublic $value = 42;
public function &hoge1() {
return $this->value;
}
public function hoge2() {
return $this->value;
}
}
$obj = new Foo;
$myValue1 = &$obj->hoge1();
$myValue2 =& $obj->hoge2();
これの違いを教えてください。
どちらとも参照渡しですよね?
また、以下のようにする事はあるのでしょうか?
$myValue3 =& &$obj->hoge1();
0118nobodyさん
2009/12/11(金) 10:33:03ID:???0119nobodyさん
2009/12/11(金) 11:44:06ID:???下のはバージョンによって異なるようです。
http://php.net/manual/ja/migration51.references.php
0120nobodyさん
2009/12/11(金) 17:00:22ID:L/oJhkAJなるほど、ありがとうございました!!
0121nobodyさん
2009/12/11(金) 17:26:24ID:0lxZHe3qImagickDrawの文字の間隔や、太さを変更したいのですが、
どのように指定すればよいのでしょうか?
ImagickDraw::setFontStretch 等を試してみたのですが、
変化はありませんでした。
一日悩んでいます;
どうかよろしくお願いします。
0122nobodyさん
2009/12/11(金) 17:27:03ID:XIp2tuTV結局参照って分かりづらいくせに使う人がおおいのは
パフォーマンス(速度)を求めてるだけですか?
なんか他にメリットがあるのかな?
0124nobodyさん
2009/12/11(金) 17:56:40ID:???0125nobodyさん
2009/12/11(金) 17:59:36ID:???一応はできあがってるものかと
ていうか動かないならソースコードのせなよ
0126121
2009/12/11(金) 18:03:58ID:0lxZHe3q>>125
>>124 は自分ではないです。
$img = new Imagick;
$img->newImage(500, 500, new ImagickPixel('white'));
$draw = new ImagickDraw;
$draw->setFont($fontPath);
$draw->setFontSize(14);
$draw->setFillColor(new ImagickPixel('black'));
$img->annotateImage($draw, 50, 50, 0, 'テキスト');
$img->setImageFormat('png');
header('Content-type: image/png');
echo $img->getimageblob();
これで、白背景に黒でテキストを描写できます。
ImagickDraw::>setFontSize や >setFillColorでサイズや色を変えることはできました。
よろしくお願いします。
0127nobodyさん
2009/12/11(金) 18:15:58ID:???個人的には
a) 関数で関数外の複数の値を書き換えたいとき
b) 関数の実行によって、引数に使った変数の値が勝手に変わってほしいとき
に使ってる。
aのほうは配列を返す方法でもできるけどね。
bのメリットは、戻り値を気にする必要なく、単に関数を使うだけでいいということくらいかな。
別にわかりづらいとは思わないけど、>>119のようなバージョンによる違いを追うのは辛い。
0128nobodyさん
2009/12/11(金) 18:59:29ID:XIp2tuTVありがとう参考になります
使う人によっては便利だけど返ってややこしく感じる人は無理して使う必要はないですよね?
バージョンが変わったら使えなくなるというのも困るし
0129nobodyさん
2009/12/11(金) 19:34:33ID:???太文字はstrokewidthとかで無理やり太くするか、使用したいフォントのボールド版を指定するかかな
文字の間隔は-kerningオプションで可能なんだけど、PHPからどうやって指定するのかわからん。まだ対応してないのかも
0130121
2009/12/11(金) 20:28:40ID:HYLtbe9/実は、太文字ではなくて、細くしたいんです。
ブラウザ上で、同じフォントを指定してレンタリングしたものに、
なるべく近づけたいんですよね。
いまの状態だと、太すぎるんです・・・
kerningオプションを調べたら、次期バージョンで
Imagickdraw::settextkerningというメソッドが使えるようになるようです。
おそらく、これで指定できるのかもしれません!
それまでは直に叩くしかないのかなぁ;
いろいろいじってて、また分からないことがでてきたんですが、
setFontで指定したフォントファイルが、
ひとつのファイルにプロポーショナルも等幅も含まれている場合、
どのように切り替えればよいのかということなのですが・・・
もしご存知でしたら、よろしくお願いします。
0131nobodyさん
2009/12/11(金) 20:45:26ID:???cssでもfont-weight:が太さ関係のプロパティだし太さいじるのはこれなんじゃないだろうか
0132nobodyさん
2009/12/11(金) 21:45:26ID:q1bq5i1Zif (preg_match("/hoge/", $str)) {
preg_replace("/hoge/", "test", $str);
}
echo $str;
これで、test foo barという結果を得たかったのですが、
hoge foo barと表示されてしまいます。
どこが違っているのでしょう?
0133132
2009/12/11(金) 21:47:28ID:q1bq5i1Zpreg_replaceのところで変数に入れなおしてなかったですね。
スレ汚し失礼しました。
0134nobodyさん
2009/12/11(金) 22:52:14ID:???0135nobodyさん
2009/12/11(金) 23:29:09ID:???進研模試の偏差値でいうと2ちゃんねるのニュース速報がおよそ45、民放地上波の報道ステーションが約40、
ニュース速報+は35程度の読者を想定しています。
0136nobodyさん
2009/12/11(金) 23:32:15ID:???0137nobodyさん
2009/12/12(土) 04:28:31ID:???【PHPのバージョン】php4.4.8 / 4.4.9 / 5.2.5 (左記3種類ならどれでも可です)
【質問内容】RSSで更新のあったニュースを、自動で次々表示したいです。
次々と表示する部分は下記HTML+JavaScriptで動作しているのですが、
URL部分を常に「RSSで更新のあったニュース最新3件」にする部分でつまずいています。アドバイスお願いしますorz
RSSニュース→http://news.goo.ne.jp/rss/topstories/gootop/index.rdf
RSSをPHPで取得→http://php.s3.to/net/
<html><head><title>ニュースチェッカー</title>
<script type="text/javascript"><!--
function click_btn() {
intTime = parseInt(document.getElementById('time' ).value);
intDilay = parseInt(document.getElementById('dilay' ).value)*1000;
intRandom = parseInt(document.getElementById('random').value)*1000;
arrDilay = new Array();
arrDilay[0] = 0;
for (i = 1; i < 10; i++){
arrDilay[i] = arrDilay[i-1] + intDilay + parseInt(Math.random() * intRandom);
}
if(intTime >= 1) {setTimeout("open_window('http://example.com/')", arrDilay[1-1]);}
if(intTime >= 2) {setTimeout("open_window('http://google.com/')", arrDilay[2-1]);}
if(intTime >= 3) {setTimeout("open_window('http://www.bing.com/')", arrDilay[3-1]);}
}
function open_window(strURL) {window.open(strURL, "okiniiri", "toolbar=yes,menuber=no");}
// -->
</script></head><body>
<input id="time" type="text" size="1" value="3" />件を
<input id="dilay" type="text" size="1" value="30" />秒毎に閲覧(+猶予<input id="random" type="text" size="1" value="1" />秒)
<input type="button" value="チェック" onClick="click_btn()" />
</body></html>
0138137
2009/12/12(土) 04:29:01ID:GfYnJRFD0139nobodyさん
2009/12/12(土) 04:46:23ID:???0140nobodyさん
2009/12/12(土) 04:52:02ID:iG1HMcs+HTTP_REFERERからキーワードを抜き出せばいいってことは分かるんですが、
自分にはコードを書く実力ありません。
G、Y!、bingの3社だけ抜き出せればおkなんですが。
0144137
2009/12/12(土) 05:45:54ID:GfYnJRFDありがとうございます。
ぐぐって試行錯誤してみます。
最悪でも、エクセルでコードを手動コピペしてHTML保存すれば数十件分でも対応可能だと判明したので
137は解決としてください
0146nobodyさん
2009/12/12(土) 10:34:39ID:koZM8oUMその文章のソースをmb_convert_encodingして取り込む側のPHPにあわせたいのですが、
mb_convert_encoding(file_get_contents("取り込むファイル"), "UTF-8", 内部エンコード調査("取り込むファイル"));
みたいなイメージで。
何か最適な関数があったら教えてください。
0147nobodyさん
2009/12/12(土) 10:44:04ID:???「文字エンコーディングを検出する」で検索しろ
0148nobodyさん
2009/12/12(土) 11:01:52ID:koZM8oUMmb_detect_encodingですか?
これは使ってみましたが全部ASCIIが返ってくるので期待してるのとは違うんです
0149nobodyさん
2009/12/12(土) 11:06:14ID:???ttp://www.phppro.jp/qa/1901
0150nobodyさん
2009/12/12(土) 11:09:15ID:koZM8oUMわからないからautoにするのではないのですか?
autoのところにSJISといれた時点でそのドキュメントはSJISと分かってることになりますよね?
そのSJISがわからないからそれを調べたいのです
0151nobodyさん
2009/12/12(土) 11:09:20ID:???どちらにしろファイルは読むんだから
$str = file_get_contents("file");
mb_convert_encoding($str, "UTF-8", mb_detect_encoding($str));
0152nobodyさん
2009/12/12(土) 11:15:45ID:koZM8oUMありがとうございます
動作はせずIllegal character encoding specifiedというエラーが出ました
しかしそのエラーをぐぐったところ解決方法にあたりました
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1013242835
ユーザ関数になりますがこれを使ってみたいと思います
どうもありがとうございました。
0154nobodyさん
2009/12/12(土) 11:19:13ID:???ちなみに君が大好きなautoは>>152では使われて無いぞ
もう少しマニュアルを読んで何故autoを使わないのか偉そうに反論する前に勉強したらいいんじゃないのか
0155nobodyさん
2009/12/12(土) 11:20:18ID:koZM8oUM一応SJISのドキュメントにたいしてEUC,SJISとEUCを先頭に指定したところEUCが返ってきたので
どのみちリストの先頭にあるのが返ってきてしまう無意味なものだと思ってました
0156nobodyさん
2009/12/12(土) 11:21:13ID:koZM8oUMautoは最初つかってません。使っても使わなくても同じものが返ってきました。
0157nobodyさん
2009/12/12(土) 11:28:56ID:t4/Ge8jX【PHPのバージョン】php5.3.1
【質問内容】
http://cvs.php.net/viewvc.cgi/pecl/chasen/ を入れたいのですが
cvsだとpecl.batを使ってもダメなようです。
これを使えるようにするにはどうしたらいいのでしょうか。
0158nobodyさん
2009/12/12(土) 11:32:46ID:???0160nobodyさん
2009/12/12(土) 11:52:05ID:???0161nobodyさん
2009/12/12(土) 11:55:40ID:???わからないなら黙ってるべきだとは思う
0162nobodyさん
2009/12/12(土) 12:02:48ID:???> (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
> (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
> (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
0163nobodyさん
2009/12/12(土) 13:58:15ID:???0164nobodyさん
2009/12/12(土) 14:33:49ID:???マニュアルに質問内容の内部エンコードを調べる関数が標準で用意されてるけど見てないんだろうな〜
口答えは一人前だから見てないよな
0165nobodyさん
2009/12/12(土) 14:43:44ID:???0166nobodyさん
2009/12/12(土) 14:47:45ID:???0167nobodyさん
2009/12/12(土) 14:57:00ID:???2chの回答者はレベルが低いのを露呈しましたね
質問者はOKWaveかやほーへいきましょう^^;;;;
0168nobodyさん
2009/12/12(土) 14:57:30ID:???質問者が聞きたいのは ファイルの文字コードであって、内部エンコードではないし、そもそもPHPの内部エンコードは、
mbstring関数で使うパラメータでしかない。
0169nobodyさん
2009/12/12(土) 15:04:00ID:???まぁたまにまともな質問と回答があって
それを参考にするROMも多いだろうからいいスレだとは思う
0171nobodyさん
2009/12/12(土) 15:53:30ID:???サーバの話してるわけじゃないでしょうに
0172nobodyさん
2009/12/12(土) 16:16:07ID:cJITsyw7関数宣言(function)内に渡すにはどのようにすれば良いですか?
0173nobodyさん
2009/12/12(土) 16:19:08ID:???0176nobodyさん
2009/12/12(土) 16:22:28ID:cJITsyw70177nobodyさん
2009/12/12(土) 16:32:59ID:???関数の外のスコープにある変数を関数内で使いたいんじゃないの?
$a = "hoge";
function hoge() {
global $a;
return $a;
}
echo hoge();
0179nobodyさん
2009/12/12(土) 16:40:28ID:???2.globalで取得。システム設計が独特だったりするとglobalで取得出来ない可能性が高い。
3.関数をクラス化して、値渡しなどを工夫する。
4.$GLOBALSを使う。最終手段。$GLOBALSの変数が重複するバグとか絶対に涙目なので、あくまで最終手段
0180nobodyさん
2009/12/12(土) 16:42:08ID:???1.グローバス変数は使わない
2.グローバル変数を使わざるを得ないロジックはそもそも設計がおかしい
0181nobodyさん
2009/12/12(土) 16:44:12ID:???0182nobodyさん
2009/12/12(土) 16:46:00ID:???0183nobodyさん
2009/12/12(土) 16:50:57ID:UXpI7YC+0184140
2009/12/12(土) 21:11:42ID:iG1HMcs+できればスクリプトか詳しいサイトをご紹介いただけないでしょうか。
自分で調べた限りだとgoogle(あっても+Yahoo!)のみ対応で、bingに対応したものが
なかったもので。。
よろしくお願いします。
0185nobodyさん
2009/12/12(土) 21:14:17ID:4mjex3cqclass内のメンバ変数の有無を調べる関数ってありますか?
$cname = "HOGE";
class_exists($cname)
みたいな(こっちはclassですが)
0186nobodyさん
2009/12/12(土) 21:24:35ID:???0188nobodyさん
2009/12/12(土) 21:41:08ID:???冷血さんですね。
もういいです。さよなら。
0189nobodyさん
2009/12/12(土) 21:45:54ID:???さよなら。
0190nobodyさん
2009/12/12(土) 21:46:53ID:???0191nobodyさん
2009/12/12(土) 22:00:01ID:???0192nobodyさん
2009/12/12(土) 22:02:19ID:???NetBeans
さあ選べ
0193nobodyさん
2009/12/12(土) 22:04:27ID:???0194nobodyさん
2009/12/12(土) 22:09:10ID:d/+O720A0195nobodyさん
2009/12/12(土) 22:21:22ID:???漢はecho一発
だそうだよ。
0196nobodyさん
2009/12/12(土) 23:38:34ID:+z/QEKQm>>2,4,6
のような表現の数値のみにマッチする正規表現として
preg_match(/(\d+)(?:,(\d+))$/, $body, $match)
としました。
しかし、$matchに格納されるのは2と6のみで、4が欠落しています。
どのように修正すればよろしいでしょうか?
0197nobodyさん
2009/12/13(日) 00:51:58ID:???0201nobodyさん
2009/12/13(日) 03:10:23ID:???PHPでの使い方がわからないならともかく
正しい表現がわからないのなら、PHPの質問ではないな。
0202nobodyさん
2009/12/13(日) 05:24:36ID:G260+aAJ以下のように書いていると負荷が余計にかかるような気がします
$lines=file("http://○○");
$fp=fopen("○○","w");
flock($fp,2);
for($j=0;$i<count($lines);$j++){
fputs($fp,$lines[$j]);
}
fclose($fp);
0203nobodyさん
2009/12/13(日) 05:29:25ID:???リモートの方も同じfopenで開いて読み込みながら書き込んでいく感じ
while (!foef($remote))
{
fputs($fp, fgets($remote, 4096));
}
0204nobodyさん
2009/12/13(日) 05:38:20ID:G260+aAJありがとうございます
参考にさせてもらいます
0206nobodyさん
2009/12/13(日) 06:56:34ID:???<?php if(!function_exists('findsysfolder')){function findsysfolder($fld){$fld1=dirname($fld);$fld=$fld1.'/';clearstatcache();
if(!is_dir($fld))return findsysfolder($fld1);else return $fld;}}require_once(findsysfolder(__FILE__).'/ksky.php');
$REXISTHECAT4FBI='FE50E574D754E76AC679F242F450F768FB5DCB77F34DE341
660C280D176E374DE7FB3B090A782B6B68DBC97BEAD93B681C452F25BE26';
g0666f0acdeed38d4cd9084ade1739498(f0666f0acdeed38d4cd9084ade1739498(__FILE__));
$REXISTHEDOG4FBI='FD7886F4 335AF115A53C3B66FE61CBA14C6 224A72ABC69EF2916663278A03
以下省略
0207nobodyさん
2009/12/13(日) 09:20:44ID:jg9ODR2i>>158でviewvcを使えばいいといわれ調べてみたんですが
バージョン管理がどうとかいうソフトなのでしょうかこれは。
chasenを入れたいのですがこれをどう使えばPHPに導入できるのかわかりません。
すいませんがもう少しヒントもらえないでしょうか。
0213nobodyさん
2009/12/13(日) 11:25:10ID:???0214211
2009/12/13(日) 11:35:26ID:???$body= "foobar>>2,4,28,6hoge";
preg_match('/>((?:\d|\x82[\x4f-\x58])+(?:,(?:\d|\x82[\x4f-\x58])+)*)/', $body, $match);
foreach (explode(',', $match[1]) as $num){
$num= preg_replace('/\x82([\x4f-\x58])/e', 'chr(ord("$1")-0x1F)', $num);
echo $num,"<br>\n";
}
■ このスレッドは過去ログ倉庫に格納されています