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

【PHP】下らねぇ質問はID出して書き込みやがれ 91

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/12/08(火) 13:53:09ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、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等)・フレームワークは各該当スレへ
0036nobodyさん2009/12/08(火) 23:06:16ID:GGPotsAy
>>35
今回はフォームからMySQLに登録したのではなく、コマンドプロンプトから読み込んでデータベースに登録しました

mb_internal_encoding("Shift_JIS"); を書き加えたらデータベースからの出力内容はちゃんと日本語で出ましたが、今度はその他の<table>要素とかの文字が文字化けしてしまいました・・・


>htmlタグに<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">

一応やってみましたが残念ながら改善致しませんでした
0037Neet2009/12/08(火) 23:17:34ID:bw06sTbP
データベースから取得して出力しているファイル見せてもらえませんか?
0038nobodyさん2009/12/08(火) 23:21:23ID:???
headerいじっても内部コードが違うなら意味ない
内部コードがどうなってるか調べてみ
0039nobodyさん2009/12/08(火) 23:26:03ID:GGPotsAy
>>37
例えばなのですが、
<?php
require_once("DB.php");
$dsn="mysqli://pearusr:pearpass@localhost/pear";
$db=DB::connect($dsn);
$rs=$db->limitQuery("SELECT * FROM composer ORDER BY birth ASC",2,3);
?>

<table border="1">
<tr>
<th>名前</th><th>出身国</th><th>誕生日</th>
<th>享年</th><th>代表作</th>
</tr>
<?php while($row=$rs->fetchRow(DB_FETCHMODE_ASSOC)){ ?>
<tr>
<td><?php print(htmlspecialchars($row['name'])); ?></td>
<td><?php print(htmlspecialchars($row['country'])); ?></td>
<td><?php print($row['birth']); ?></td>
<td><?php print($row['old']); ?>歳</td>
<td><?php print(htmlspecialchars($row['work'])); ?></td>
</tr>
<?php } ?>
</table>

です
0040Neet2009/12/08(火) 23:34:05ID:bw06sTbP
あ、ごめん
shift_jisでphpファイルを保存するとどうなりますか?
0041nobodyさん2009/12/08(火) 23:38:51ID:???
>>39
metaタグはどこ行った
0042nobodyさん2009/12/08(火) 23:42:48ID:???
htmlspecialchars(mb_convert_encoding($row['name'], "EUC", "SJIS"))
0043nobodyさん2009/12/08(火) 23:44:10ID:GGPotsAy
>>40
テーブル上の全ての文字、名前とかも文字化けします
データベースからの文字は変換されるのかと思っていたら、それすらも文字化けしてしまいます

>>41
すみません
一応自分でも<table>の上に、<html><meta〜><body>など書いてタグを閉じてみたのですが、元々がこのコードでしてそれを出しました

0044nobodyさん2009/12/08(火) 23:48:31ID:GGPotsAy
>>42
自分でも、htmlspecialchars(mb_convert_encoding($row['name'], "EUC-JP", "auto"))
としたら上手くいったのですが、mb_convert_encoding()を全てに書かなきゃいけませんでした
もう結構な日数、設定を見直そうと色々とやったり検索してみたのですが、迷宮に迷い込んでしまいました
0045nobodyさん2009/12/08(火) 23:53:02ID:???
>mb_convert_encoding()を全てに書かなきゃいけませんでした
htmlspecialcharsも全部に書いてるじゃないか
ていうかそういうもんだし・・・
いやなら$row全部にかければいいんじゃね
0046nobodyさん2009/12/08(火) 23:58:35ID:???
迷宮に迷い込むぐらいならDB側もPHP側も全てUTF-8にしとけ
というのがこのスレのスタンス
たまに出るが>>4の1のEUC-JPはそろそろはずしたほうがいいと思う
0047nobodyさん2009/12/09(水) 06:25:37ID:AEdsXhEH
PHP 6 では safe_mode が廃止されるようですが、
では共用サーバにおいて各ユーザが自分に割り当てられた
ディレクトリ以下にしか読み書きできないようにするには
どうすればいいのでしょうか? apache + mod_php です。
0048nobodyさん2009/12/09(水) 06:35:27ID:LJm/OnIu
正規表現でfilename_150x100.jpgのようなファイル名の時に
filename.jpgでもfilename_150x100.jpgでもマッチさせたいんですがうまくいきません。

preg_match('/^([0-9a-z]+)_([¥d+]{2,3})x([¥d+]{2,3})¥.(jpg|gif|png)$/', $file, $ret)

↑まではなんとか辿りつきましたがこれだと_150x100がないとマッチしてくれなくて困っています。
多分初歩的なことだと思いますが、どなたかここから先を教えてください。

0049nobodyさん2009/12/09(水) 07:34:34ID:???
^abc(|[12])$ は abc, abc1, abc2 とマッチするよ。
0050nobodyさん2009/12/09(水) 07:42:02ID:???
<?php
while($row=$rs->fetchRow(DB_FETCHMODE_ASSOC)){
  foreach ( $row as $eachvar=>$eachval){
$row[$eachvar] = htmlspecialchars(mb_convert_encoding($reachval, "EUC", "SJIS"));
}
?>
<tr>
<td><?php print($row['name']); ?></td>
0051nobodyさん2009/12/09(水) 08:57:19ID:???
>>47
ログインはさめばいいよ
ダイレクトにアクセスしてもはじけばいいだけ
0052322009/12/09(水) 09:36:23ID:anat6YPp
昨夜は色々とありがとうございました
結局問題が解決しなかったので、ご指摘の通りphp.iniもmy.cnfもUTF-8に統一しました
テキストエディタの初期文字コード、保存文字コード共にUTF-8に、ブラウザも自動判別(+UTF-8)にしたところ何とか文字化けは起こらなくなりました
これで文字化け問題は解決したのか分かりませんが、一応このままやってみようと思います
ありがとうございました
0053nobodyさん2009/12/09(水) 11:29:07ID:???
その程度の知識じゃUTF−8特有の問題にそのうち陥るw
0054nobodyさん2009/12/09(水) 11:44:36ID:zpeYVRKK
以下の処理をするとファイルの一番上の行で処理が終わってしまうのですが、
複数行読み込ませて「<>」の左の要素と「$_POST['button']」が一致した時ループを終了して$dataに代入するにはどのようにすればいいでしょうか?

if($_POST['button'] === 'NOT') $_POST['button'] = '';
$fhy = fopen("data.cgi","r");
@flock($fhy,"2");
while(!feof($fhy)) {
$fline = fgets($fhy);
$textline = explode('<>',$fline);
if($_POST['button'] === $textline[0]) {
$flag = 1;
breack;
}
}
if($flag == 1) $data = $textline[1];
0055nobodyさん2009/12/09(水) 11:48:35ID:zpeYVRKK
すみません、$dataに代入するのは「<>」の右の要素です。
要素は二つのみです。
0056nobodyさん2009/12/09(水) 12:00:08ID:???
>>54
$_POST['button'] = '';
んん?

if($_POST['button'] === $textline[1]) {
$data = $textline[1];
break;
}

でいいのでは?
0057nobodyさん2009/12/09(水) 12:02:44ID:mJCDNQBS
【OS名】Winxp SP2
【PHPのバージョン】php5.045
【連携ソフトウェア】-
【質問内容】
コードを記述します。


<html>
<head><title>Hello</title></head>
<body>

<?php
$now = gettimeofday();
$weekday = array( "日", "月", "火", "水", "木", "金", "土" );
echo date('Y/m/d') .' '. '(' . $weekday[date("w")].')'.' ' . strftime('%H:%M:%S',time()) . '.<font size="2">'.$now['usec'];
?>

</body>
</html>


上記に於いて、タイミングによってマイクロ秒の部分の桁数が4桁とか3桁とかに
変わってしまうんですが、これを常に6桁に固定させることは可能でしょうか?
よろしくお願いします。
0058nobodyさん2009/12/09(水) 12:03:05ID:zpeYVRKK
お、ありがとうです。試してみます
0059nobodyさん2009/12/09(水) 12:05:49ID:???
>>57
sprintfとか使って0埋めすれば?
0060nobodyさん2009/12/09(水) 12:11:43ID:zpeYVRKK
>>56さん
マジでありがとうございました!
0061nobodyさん2009/12/09(水) 12:59:57ID:mJCDNQBS
>>59
やてみたんですがどうもうまくいきません…
大変お手数ですがコードを記述していただけないでしょうか?
0062nobodyさん2009/12/09(水) 13:02:04ID:???
安易に答えを求めるな 試行錯誤しろ
0063nobodyさん2009/12/09(水) 13:04:53ID:???
>>61
わかんなかった?マニュアルに書いてるから出来ると思ったが
$now['usec']を
sprintf("%06d", $now['usec'])
0064nobodyさん2009/12/09(水) 14:56:51ID:???
PHPって簡単とかちまたで言われているが(まぁ記述に関しては特別難しいとは思わないけれど)、PHP、SQL、PEAR、Smarty、ZendFramework、データベースとの連携とかやると結構大変だなぁ
参考書だけでいいってのならば数ヶ月でいいだろうけれど、ちゃんと本家に行ってマニュアル読んでってなるとめっちゃ大変だった
設定などにもかなりてこずったし、学習量は少ないとは思えなかった

コレで大変ならばJavaとかCとかもっと大変なんだろうな・・・

0065nobodyさん2009/12/09(水) 15:02:28ID:mJCDNQBS
>>63
すいません、まだ勉強し始めなものでして。精進します
>>62
うまくいきました!ありがとうございました!
0066nobodyさん2009/12/09(水) 16:04:19ID:???
>>64
データベースはPHPに限ったことじゃないし、PEAR、Smarty、ZFはあくまでもツールだから
使わない方法もある。全部PHPで作れるし
0067nobodyさん2009/12/09(水) 16:27:18ID:???
>>66
PHPだけで全てまかなえる実力のある人間はそう多くないと思うな
確かに一人で作れば別にいらないけれど、グループで作るときなんかは・・・
0068nobodyさん2009/12/09(水) 18:29:40ID:???
>>48
[A-Za-z0-9]+(_[0-9]+x[0-9]+)*\.(jpg|png)
0069nobodyさん2009/12/09(水) 18:42:13ID:wpJ/zGII
ども Smartyを使っていないかたはデザインはどうしてるんでしょうか?
includeでも使ってページを構成してるんですか?
教えてください
0070nobodyさん2009/12/09(水) 18:43:37ID:???
smarty以外にもテンプレートエンジンはあるけどそれも含めないの?
0071nobodyさん2009/12/09(水) 20:00:28ID:???
>>69
これとか。
http://q.hatena.ne.jp/1202225691

フレームワーク使っているなら、ヘルパーで簡潔に記述できるようになっているので
ビューの部分にわざわざテンプレートを使う事が無くなってきた。
0072taigo ◆RpNs8sZ5pNfE 2009/12/09(水) 21:29:11ID:zqrOwFPJ?2BP(2)
html中にphpファイルをincludeしてるんですが
ブラウザでみるとそのスクリプト直前に一行改行が入ってしまいます。
phpファイルでは、いろいろ定義したりしていますが
html形成部分(echo "<div>〜</div>")中では<br>や\nなどの
改行指定はしていません。
考えられる原因はなんでしょうか。
0073nobodyさん2009/12/09(水) 21:36:23ID:???
先頭部分を抜粋して書いたほうが回答がつきやすいよ
0074taigo ◆RpNs8sZ5pNfE 2009/12/09(水) 21:55:20ID:zqrOwFPJ?2BP(2)
>>73
アドバイスサンクス

このページのスクリプト(サンプル1)を改造して使ってるんですが、
改造前のサンプル動作でも改行が入っていたのでそのまま
載せさせてもらいます。

(スクリプトの説明&ダウンロードページ)
ttp://www.geekpage.jp/web/valuecommerce-api/search-1.php
(動作しているところ:一番上に改行がはいっています)
ttp://www.geekpage.jp/web/valuecommerce-api/sample1/
0075taigo ◆RpNs8sZ5pNfE 2009/12/09(水) 22:00:29ID:????2BP(2)
連投申し訳ない、ちなみに「改行」はhtmlのソースでは確認できません。
ページ上で1行程度隙間ができてしまうことを「改行」といっています。
0076nobodyさん2009/12/09(水) 22:32:56ID:???
>>74
無駄なものを消してみたけど、下のHTMLだけでも改行が入るみたい。

<html>
<head><title>タイトル</title></head>
<body>
?<table border="1"><tr><td>テスト</td></tr></table>
</body>

テーブルの一行だけにすると改行が消える。
テーブルの仕様なんじゃ・・?


ていうか、リンク先のサンプル酷すぎ。
汚いし、リンクが全部アフィじゃん。
0077762009/12/09(水) 22:34:12ID:???
余計な?が入ったので、消してね。
0078nobodyさん2009/12/09(水) 22:34:44ID:???
スタイルシートの問題では?
0079nobodyさん2009/12/09(水) 23:05:37ID:???
よけいな?が入ったのがヒントだね。
0080762009/12/09(水) 23:24:00ID:???
>>79
あー、そのとおりだわw
0081taigo ◆RpNs8sZ5pNfE 2009/12/09(水) 23:26:32ID:????2BP(2)
>>76
提示してもらったhtmlでは私のいう「改行」は入りませんでした。
改行というより上のボックスとの「隙間」という感じです。画像にしたので確認できたらお願いします。
ちなみにhtmlの出力部分はdivに書き換えているので、テーブルは一切使っていません。
出力されたhtmlのソースをコピって手書きで同じように書き直すと改行が
入らなくなりますので、phpで出力された際になにががまぎれてしまうのかと。。。

・すきまができる状態
→ttp://www1.axfc.net/uploader/Img/view.pl?dr=2588291470&file=Img_67091.jpg
・すきまができない状態(html手書き)
→ttp://www1.axfc.net/uploader/Img/view.pl?dr=9055896527&file=Img_67092.jpg

>>78
手書きしたら隙間ができないうえに、phpからの出力時は
スタイルシートをはずしても改行がはいってしまいます。
0082taigo ◆RpNs8sZ5pNfE 2009/12/09(水) 23:28:43ID:????2BP(2)
失礼、うpろだが直接参照できないみたいなので、もう一回張ります。
すきまあり:ttp://www1.axfc.net/uploader/Img/so/67091
すきまなし:ttp://www1.axfc.net/uploader/Img/so/67092
0083762009/12/09(水) 23:34:50ID:???
改行の入る部分に、見えない余計な文字が入ってるみたい。

改行部分の前の行の最後の文字( > とか)から
改行文字の後の行の最初の文字まで
選択して削除して、消した文字を手入力してみて。
0084nobodyさん2009/12/09(水) 23:34:59ID:???
includeするphpファイルの閉じタグの後の空白行では?
0085nobodyさん2009/12/09(水) 23:43:45ID:???
サンプルが悪いということだ
0086taigo ◆RpNs8sZ5pNfE 2009/12/10(木) 00:00:59ID:????2BP(2)
>>83
消してから手書きみましたがやはり隙間は消えませんでした。。
ただ、IE5.5、IE6、IE7でソースをみると
隙間部分に文字化けした「・ソ」という文字が入っているので、
なんらかしら不可視の文字が入っていることは確かなようです。
※firefox、safari、chrome、opera、IE8ではソース上にもなにも表示されません。

>>84
閉じタグ後の空白行も調べましたがありませんでした。念のため周辺前後を
消してから手書きしましたがだめでした。。
0087nobodyさん2009/12/10(木) 00:04:43ID:???
UTF-8のBOMとか?
0088taigo ◆RpNs8sZ5pNfE 2009/12/10(木) 00:09:36ID:????2BP(2)
>>87
まさにBOMでした!!BOMを含めないようにしたらすきまがきえました!
しかしほんとに単純なミスで申し訳ないです。。。
ほかの方も色々とありがとうございます。非常に助かりました!
0089nobodyさん2009/12/10(木) 00:18:38ID:???
乙乙
0090482009/12/10(木) 01:03:02ID:R7rC19iD
>>68

できました!ありがとうございました!
0091nobodyさん2009/12/10(木) 01:41:39ID:At+7lyq4
【OS名】WinXP SP2
【PHPのバージョン】まだ
【連携ソフトウェア】-
【質問内容】
webページを読み取るプログラムを組もうと思っているのですが、
・このページのメール欄にsageと入っている数をカウントしたい。
・同様にsageと入っているNoを集計したい
こういったときにphpで組むことは可能でしょうか?
また、そういう時は一度cvsに落とすのが良いのでしょうか?
0092nobodyさん2009/12/10(木) 01:44:29ID:???
可能だよ
0093912009/12/10(木) 02:05:12ID:At+7lyq4
回答ありがとうございます。

可能ということは、
1.対象のWebページを指定してソースコードを取得する。
2.ソースコードから"mailto:sage"を探す
こういう流れになるのでしょうか?
その場合、ソースコードを取得する関数が解らないので教えて頂きたいです。
0094nobodyさん2009/12/10(木) 02:23:08ID:???
>>93
超手抜きな方法
 1.JavaScriptでPHPに対象のウェブページを取ってくるように要求する(クライアントサイド)
 2.file_get_contentsとかでHTMLを取る(プロキシ的な役割)(サーバーサイド)
 3.HTMLをもらったらJavaScriptでパース(クライアントサイド)
 4.DOM使ってリンクをカウント(クライアントサイド)
 
0095nobodyさん2009/12/10(木) 12:55:29ID:wtg1lapo
chmodみたいなWindows上で動かすとエラー吐き出すけど、
鯖に上げる時は必須になる関数ってどうしてますか?
わざわざコメントにするのも手間ですし、
簡単に対応する方法ってありませんか?
0096nobodyさん2009/12/10(木) 12:56:36ID:???
if (windows環境かどうか)
0097nobodyさん2009/12/10(木) 13:21:42ID:???
公式以外で__set __getについて正確に解説してくれているサイトを紹介してくれませんか
よく理解できないのですよ。
0098nobodyさん2009/12/10(木) 13:23:01ID:iDoAb1SC
おっとあげるんでしたかすみません
0099nobodyさん2009/12/10(木) 13:23:25ID:???
俺のアフィブログで詳しく解説してもいいけど
0100nobodyさん2009/12/10(木) 13:30:13ID:???
http://itpro.nikkeibp.co.jp/article/MAG/20061122/254519/
0101nobodyさん2009/12/10(木) 13:47:04ID:iDoAb1SC
レスありがとう。

メンバ変数がpublicってどうなの?
直接参照できる時点で意味がないと思います。
0102nobodyさん2009/12/10(木) 13:51:32ID:???
君にとっては意味が無いのかもしれないが
それを全体の全否定するのはどうか
0103nobodyさん2009/12/10(木) 13:52:19ID:???
>>94

>>93じゃないんだが↓ってどういうこと?

>1.JavaScriptでPHPに対象のウェブページを取ってくるように要求する(クライアントサイド)
0104nobodyさん2009/12/10(木) 14:26:18ID:iDoAb1SC
>>102
よくわかっていないためすみません
例えば、__setは値をセットされる前に検証できることが利点だと理解していますが
その対象が直接セットできてしまうのでは意味がないと思ったからです。
0105nobodyさん2009/12/10(木) 14:26:47ID:???
__set __getなんてPHPルール使わないから放置でおk
0106nobodyさん2009/12/10(木) 14:34:51ID:???
>>104
ここで愚痴ってないで開発者に直接言えよ、負け犬
0107nobodyさん2009/12/10(木) 15:04:23ID:iDoAb1SC
どうしたの興奮して
0108nobodyさん2009/12/10(木) 15:11:18ID:???
>>104
__setで、直接触れないものを変更すればいいよね?
0109nobodyさん2009/12/10(木) 15:43:02ID:???
定数をconstで定義するPHPにおいてpublicフィールドは不要と思っていい
0110nobodyさん2009/12/10(木) 16:13:01ID:Dg41VzRp
WindowsXP環境でeAcceleratorを有効にすると遅くなるんだけど原因分かる?
phpのバージョンが5.2.6なので
ttp://blog.tomnekosoft.com/tomnekosoft.php?itemid=2154
ここで拾ってきたんですが、他人がコンパイルしたものじゃ遅くなったりするんでしょうか?
requests per secondが22→15くらいに落ち込みます、切ってみると戻ります
0111nobodyさん2009/12/10(木) 16:19:49ID:???
CPUやコンパイラにもよるだろうね
0112nobodyさん2009/12/10(木) 17:40:16ID:???
>>103
XMLHttpRequest
0113nobodyさん2009/12/10(木) 19:48:37ID:eaFJEUuE
htmlタグをクラスにして引き出そうとしていたのですが
書いてるうちに利点がわからなくなってしまいました。

始めは、
echo $html->_div($id);

echo $html->_input_text($maxlength, $value, $name, $size, $id);
みたいに引き出せるように、さらにタグの属性は固定して、
(固定されているものの)全体的に統一感が出ていました。
しかし、一つでも新たな属性を追加したいと思ったり
htmlクラスを変更しようとしたときに
不便な点がでてきたので属性の部分は
array('id' => 'test', 'size' => 10);
な感じでforeachすることにして、
echo $html->_input('text', array('id' => 'test', 'maxlength' => 3, 'size' => 10, 'value' => 'test', 'name' => 't1'));
という風にすることにしました。

しかしこれって、わざわざ
echo '<input type="text" ・・・・>';
という風に書いていくのと比較してメリットがあるのかどうか、
と・・振り出しに戻った感じになってしまいました
それならhtmlタグをエディタに単語登録しておいた方がいいんじゃないのか、と。

そこで、みなさんはphpでhtmlタグを出力するときどういう風に管理しているのでしょうか。
何か良い方法ありましたらよろしくお願いします。
0114nobodyさん2009/12/10(木) 20:26:19ID:???
>>113
結論からいうとただhtmlはくだけでは利点がないどころか工数が多くなってデメリットだけだね
普通にhtmlに組み込んでやったほうがいい
<div id="<?php echo $id; ?>"></div>
<input type="text" maxlength="<?php echo $maxlength; ?>"/>
ただこんなプロパティ(変数)はテンプレート(html)によって変わるはずなので(共通のものならそれでいいが)
<div id="hoge"></div>
<input type="text" maxlength="20"/>
直接記述したほうがいいんでない?

実用的なHTMLを吐くクラスを作るのなら
PEARにHTML_QuickFormってのがあるのでそれを参考にしてみるといいかもしれない
0115nobodyさん2009/12/10(木) 23:17:13ID:jFiArudI
【OS名】CentOS5.4(同じCentOS5.4上のxenで動いてる仮想OS)
【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/oJhkAJ
class Foo {
public $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:???
ha?
0119nobodyさん2009/12/11(金) 11:44:06ID:???
hoge1の方は参照が返りますが、
下のはバージョンによって異なるようです。

http://php.net/manual/ja/migration51.references.php
0120nobodyさん2009/12/11(金) 17:00:22ID:L/oJhkAJ
>>119
なるほど、ありがとうございました!!
0121nobodyさん2009/12/11(金) 17:26:24ID:0lxZHe3q
PHPでImagickを使っていて、
ImagickDrawの文字の間隔や、太さを変更したいのですが、
どのように指定すればよいのでしょうか?

ImagickDraw::setFontStretch 等を試してみたのですが、
変化はありませんでした。

一日悩んでいます;

どうかよろしくお願いします。
0122nobodyさん2009/12/11(金) 17:27:03ID:XIp2tuTV
参照について自分も質問
結局参照って分かりづらいくせに使う人がおおいのは
パフォーマンス(速度)を求めてるだけですか?
なんか他にメリットがあるのかな?
0123nobodyさん2009/12/11(金) 17:53:02ID:???
>>121
使ったことないので動くサンプル乗せてくれればマニュアル見ながらいじってみるけど
0124nobodyさん2009/12/11(金) 17:56:40ID:???
動かないから聞いてるんですが・・・
0125nobodyさん2009/12/11(金) 17:59:36ID:???
文字の間隔や太さを変更したいのに変化はないと言ったのでは?
一応はできあがってるものかと
ていうか動かないならソースコードのせなよ
01261212009/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:???
>>122
個人的には
a) 関数で関数外の複数の値を書き換えたいとき
b) 関数の実行によって、引数に使った変数の値が勝手に変わってほしいとき
に使ってる。
aのほうは配列を返す方法でもできるけどね。
bのメリットは、戻り値を気にする必要なく、単に関数を使うだけでいいということくらいかな。

別にわかりづらいとは思わないけど、>>119のようなバージョンによる違いを追うのは辛い。
0128nobodyさん2009/12/11(金) 18:59:29ID:XIp2tuTV
>>127
ありがとう参考になります
使う人によっては便利だけど返ってややこしく感じる人は無理して使う必要はないですよね?
バージョンが変わったら使えなくなるというのも困るし
0129nobodyさん2009/12/11(金) 19:34:33ID:???
>>126

太文字はstrokewidthとかで無理やり太くするか、使用したいフォントのボールド版を指定するかかな
文字の間隔は-kerningオプションで可能なんだけど、PHPからどうやって指定するのかわからん。まだ対応してないのかも
01301212009/12/11(金) 20:28:40ID:HYLtbe9/
>>129

実は、太文字ではなくて、細くしたいんです。
ブラウザ上で、同じフォントを指定してレンタリングしたものに、
なるべく近づけたいんですよね。

いまの状態だと、太すぎるんです・・・

kerningオプションを調べたら、次期バージョンで
Imagickdraw::settextkerningというメソッドが使えるようになるようです。
おそらく、これで指定できるのかもしれません!

それまでは直に叩くしかないのかなぁ;

いろいろいじってて、また分からないことがでてきたんですが、
setFontで指定したフォントファイルが、
ひとつのファイルにプロポーショナルも等幅も含まれている場合、
どのように切り替えればよいのかということなのですが・・・

もしご存知でしたら、よろしくお願いします。
0131nobodyさん2009/12/11(金) 20:45:26ID:???
Imagick入ってないから試せないがsetFontWeightってのは?
cssでもfont-weight:が太さ関係のプロパティだし太さいじるのはこれなんじゃないだろうか
0132nobodyさん2009/12/11(金) 21:45:26ID:q1bq5i1Z
$str = "hoge foo bar";
if (preg_match("/hoge/", $str)) {
preg_replace("/hoge/", "test", $str);
}
echo $str;

これで、test foo barという結果を得たかったのですが、
hoge foo barと表示されてしまいます。
どこが違っているのでしょう?
01331322009/12/11(金) 21:47:28ID:q1bq5i1Z
すみません、自己解決しました。
preg_replaceのところで変数に入れなおしてなかったですね。
スレ汚し失礼しました。
0134nobodyさん2009/12/11(金) 22:52:14ID:???
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0135nobodyさん2009/12/11(金) 23:29:09ID:???
>>133
進研模試の偏差値でいうと2ちゃんねるのニュース速報がおよそ45、民放地上波の報道ステーションが約40、
ニュース速報+は35程度の読者を想定しています。
■ このスレッドは過去ログ倉庫に格納されています