【PHP】下らねぇ質問はここに書き込みやがれ 53
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/08/25(土) 22:11:08ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 52
http://pc11.2ch.net/test/read.cgi/php/1186794483/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0118nobodyさん
2007/08/28(火) 11:40:28ID:/qxtkLLIAAA_○○○
AAA_○○○_BBB
AAA_○○○_BBB_CCC
AAA_△△△
AAA_△△△_BBB
AAA_△△△_BBB_CCC
のような文字列が格納されている時、○○○や△△△の部分のみを取り出すにはどのような記述をすれば良いですか?
preg_match('/AAA_(\w+)/', $name, $matches);
ここまでは考えたのですが、その先が思いつきません。
宜しくお願いします。
0119nobodyさん
2007/08/28(火) 11:44:43ID:???echo $a[1];
0120nobodyさん
2007/08/28(火) 11:46:09ID:???0121nobodyさん
2007/08/28(火) 12:00:05ID:/qxtkLLIわざわざ正規表現を使わなくても良かったんですね^^;
0122115
2007/08/28(火) 12:20:51ID:oYOChStQ>>117
レスありがとうございます。
エラーは全部出るようにしています。
ループして、PHPが何もヘッダーを送らずダウンしたってことでしょうか?
不正終了したときもエラーを出すように設定できないものでしょうか?
何かしらヒント出してくれると、デバッグも楽なのですが。
> その時はたしか、存在しないファイルをrequireしていたのか、存在していないクラスをnewしてたとか、
このケースは、勘違いでしょう。すいません。
いろいろな部分をコメントアウトして、やっと動いたのしか覚えてません。
何かをnewしてるとこあたりだったので勘違いしたんでしょうかね。
その時も、ループしてひたすらインスタンスつくりまくってたのかも。
今、マニュアル見てみたんですけど、staticなメンバーってstaticなメソッドからしかアクセス出来ないみたいですね
そこでエラー表示出してくれても良いような気もするけど
0123nobodyさん
2007/08/28(火) 12:44:12ID:???本当にくだらないのですが、簡単なスクリプト(掲示板やカウンター)などを作られるときに、関数を沢山作って管理するほうですか?
参考にしたいので、よろしくお願いします。
0124nobodyさん
2007/08/28(火) 12:46:04ID:???外部ファイルにクラスを作って使い回していますが何か?
0127nobodyさん
2007/08/28(火) 13:13:10ID:???012896
2007/08/28(火) 13:53:56ID:y77U9tuf$mlfr = "From: " . mb_encode_mimeheader("あああ<test@hoge.com>");
を
$mlfr = "From: " . mb_encode_mimeheader("あああ") . "<test@hoge.com>";
とすることで正しくFromヘッダが送信されました。
niftyのメールサーバは何か特殊なんですかね・・・。
0129nobodyさん
2007/08/28(火) 13:56:39ID:Vlzye/6Zarray('id'=>1,'cnt'=>5,'title'=>'hoge'),
array('id'=>2,'cnt'=>4,'title'=>'foo'),
array('id'=>3,'cnt'=>0,'title'=>'bar')
);
こんな配列があったとしてcntの順にソートしたいのですが可能でしょうか?
どんな方法で出来ますでしょうか?
0130nobodyさん
2007/08/28(火) 13:59:22ID:YkG/SsxWprint <<< DOC
<form method="POST" action="$_SERVER['SCRIPT_NAME']">
DOC;
のように他の文字列が隣接してないのにエラーが出てしまうのは、
どういう解釈がされるからなのでしょうか?
あと変数を波括弧で囲む時
{$_SERVER['SCRIPT_NAME']}
${_SERVER['SCRIPT_NAME']}
の2種類の書き方がありますがこの違いってなんなのでしょう?
0131nobodyさん
2007/08/28(火) 14:24:19ID:GM5VT/dPprintf($format, $a, $b, $c, $d);
1行目にある「%-s」や「%-35s」などにあるマイナス文字はどのような意味
なのでしょうか。
0132nobodyさん
2007/08/28(火) 14:32:21ID:???0133nobodyさん
2007/08/28(火) 14:33:14ID:???0134nobodyさん
2007/08/28(火) 14:35:54ID:???cntでソート用の配列作ってarray_multisort( )
>>131
文字列の場合は-は左詰で表示
0135nobodyさん
2007/08/28(火) 18:30:13ID:???while ($sum != "ok"){
..........
}
これでできないんですがどこがおかしいのでしょうか
0137nobodyさん
2007/08/28(火) 18:34:42ID:wOTpbT+K$_REQUESTを表示させると\\になります
この現象は何ですか
0139nobodyさん
2007/08/28(火) 18:38:35ID:wOTpbT+Kこれを中止させるにはどうすればいいですか?
0143nobodyさん
2007/08/28(火) 18:49:48ID:???{
$tmp=ereg_replace("[\][\]","\x5c",$str);
$tmp=ereg_replace("[\][']","'",$tmp);
$tmp=ereg_replace("[\][,]",",",$tmp);
return $tmp;
}
0144nobodyさん
2007/08/28(火) 19:43:38ID:???動かないか?
0146nobodyさん
2007/08/28(火) 19:44:51ID:???で運用しようと思っています。
この運用だと、ポストされるエンコードがsjisとutf8になりますよね
sjisだった場合は当然utf8に変換しないといけないのですが、
mb_detect_encodingは
携帯の絵文字が混ざった文章もちゃんとsjisと判定できるのでしょうか?
あるいはもっといい方法があれば教えて下さい
0148nobodyさん
2007/08/28(火) 21:27:05ID:???0150nobodyさん
2007/08/29(水) 06:42:45ID:uYM+HrXL$template = <<<_TMP_
テンプレートです。
タイトル:{test}
おしまい
_TMP_;
preg_replace('/{(.*)}/', '$$1', $template);
{hogehoge}を$hogehogeに格納されている値に置き換えたいのですが
何か良い方法はありませんでしょうか?
このやり方では、「$test」と出力されてしまいます
0151nobodyさん
2007/08/29(水) 08:42:05ID:???<?php
$test="テスト";
?>
テンプレートです。
タイトル:<?=$test;?>
おしまい
0152nobodyさん
2007/08/29(水) 09:19:27ID:uYM+HrXL早速のご回答ありがとうございます
「テンプレートです。
タイトル:{test}
おしまい 」
これは外部ファイルとして保存しておいて
呼び出してから文字列の置き換えを行いたいのです
0153nobodyさん
2007/08/29(水) 09:25:27ID:bOc70w1/0154nobodyさん
2007/08/29(水) 09:54:17ID:uYM+HrXL詳しく言うと、アップーロードにて一般の方にテンプレをUPしてもらい
そのテンプレを元に作成したいのです
なので、拡張子はtxtがメインになると思います
0158nobodyさん
2007/08/29(水) 11:06:55ID:???外部のユーザからアップロードされたファイルをincludeして実行するという話を
本気にしてはダメだ。eスイッチも同様。
動的にやりたいならpreg_replace_callbackで。
そうでないなら preg_replace(//,array("hoge"),array($hoge)); とか。
0159nobodyさん
2007/08/29(水) 11:14:14ID:???理由は単純で殺人未遂だから。
おならには、硫化水素という有毒なガスが含まれていて、
量によっては即死する。
つまりおならによって人が死ぬことも理論的にはありえるわけで、
そのような殺人未遂行為(不可罰であるが)が、人から嫌がられるのは当然。
0160nobodyさん
2007/08/29(水) 11:27:16ID:uYM+HrXLありがとうございます
preg_replace_callbackを参考に
$test = "aaaaaa";
$text = <<<_TEXT_
test
{test}
test
_TEXT_;
function getVar($matches){
$matches = trim($matches[1]);
global $$matches;
return $$matches;
}
$text = preg_replace_callback("/{(.*)}/","getVar",$text);
echo $text;
としてみると見事に解決しました。
0161nobodyさん
2007/08/29(水) 12:08:32ID:???ブラウザを閉じない限りログアウトできませんよね?
再度認証できる方法はないのでしょうか?
0163nobodyさん
2007/08/29(水) 12:29:31ID:???失礼しましたm(..)m
0165nobodyさん
2007/08/29(水) 13:26:20ID:???それでいいのなら別にいいのだけど、
その実装だとテンプレートをアップロードできる人が
変数を全部参照できることになるから注意してね。
つまり、$mysql_passwordにパスワードを入れとくとやばいとかそういうこと。
0166nobodyさん
2007/08/29(水) 13:34:48ID:uYM+HrXLありがとうございます
特に重要なものは取り扱わないので大丈夫です
0167nobodyさん
2007/08/29(水) 13:39:40ID:???個人的にはテンプレート用の配列のみを置換するようにした方が便利だと思うよ。
$replaceStr['test'] を {test} に置き換えるとか。
0168nobodyさん
2007/08/29(水) 17:24:45ID:???以下のようにやってみたのですが出来ないようです。
echo <<<EOF
I am <?php if($test == 1) {echo 'hoge'} ?>
EOF;
0169nobodyさん
2007/08/29(水) 17:29:18ID:???0172nobodyさん
2007/08/29(水) 19:48:55ID:???一度ヒアドキュメントを抜けないと無理だと思う
0173nobodyさん
2007/08/29(水) 22:36:27ID:???ホスト名が無い場合は使えないんでしょうか
0174nobodyさん
2007/08/29(水) 22:37:21ID:???ひあどきゅめんとないにへんすうをいれれば
ふつうにできるじゃん。
0179nobodyさん
2007/08/30(木) 00:08:26ID:6umYOf5adomxmlを利用しています
このような感じです
<one>
<title>
<main>あ</main>
<man>
<blue>
<a>い</a>
<b>う</b>
</blue>
<pink>
<a>え</a>
<b>お</b>
</pink>
</man>
<woman>
<blue>
<a>か</a>
<b>き</b>
</blue>
<pink>
<a>く</a>
<b>け</b>
</pink>
</woman>
</one>
<two>
(↑の同じ構造)
</two>
0180179
2007/08/30(木) 00:12:36ID:6umYOf5a(配列ではダメです)
まずは、
$dom = domxml_open_file("xmlのURL");
$root = $dom->document_element();
$node = $root->get_elements_by_tagname('two');
みたいに書いたのですが、ここから効率のよい取得方法が分かりません。
自分で書いてみたプログラムは200行ぐらいになりました。。。
どなたかご教授ください。
0181nobodyさん
2007/08/30(木) 01:27:14ID:???BOMを付加するべき?しないべき?
0182nobodyさん
2007/08/30(木) 01:32:25ID:???0183nobodyさん
2007/08/30(木) 01:34:41ID:???0184nobodyさん
2007/08/30(木) 01:40:21ID:uPaIz1kmmb_detect_orderは("sjis, UTF-8, EUC-JP")
すると、utf-8で判定されたり、euc-jpで判定されたりしました
太陽(f89f):UTF-8
ATM(f8c9):euc-jp
これは「絵文字だけでエンコーディングを判定するのは無理ぽ」
ということでしょうか?
またshift-jisを最初に設定しているのにマッチしていないのが気になります
判定方法にバグでもあるのでしょうか?
0185nobodyさん
2007/08/30(木) 01:51:22ID:???絵文字は外字領域(SJISで未使用の範囲)を使ってるので
SJISコードとして判定されないのが正しいとオモ
0186nobodyさん
2007/08/30(木) 02:44:58ID:???0187nobodyさん
2007/08/30(木) 02:46:56ID:???0188nobodyさん
2007/08/30(木) 02:54:56ID:cbvqe7SVプレグ
csvファイル専用関数を使うメリットってありますか?
普通のファイル操作系の関数で全然問題ないのですが
0190nobodyさん
2007/08/30(木) 03:06:10ID:???そうだとおもうからpとregをわけてピーレグって読んでるけど
0191nobodyさん
2007/08/30(木) 03:29:17ID:???プレグマッテと読んでるが
人それぞれだな
0192nobodyさん
2007/08/30(木) 03:31:21ID:???0193nobodyさん
2007/08/30(木) 03:35:43ID:???プレグマッチアール(オールだがついついアールと読んでしまう
プレグリプレイス
0194186
2007/08/30(木) 03:57:17ID:???0195nobodyさん
2007/08/30(木) 03:59:03ID:???0196nobodyさん
2007/08/30(木) 04:37:15ID:cbvqe7SVで、
Warning: require_once(1) [function.require-once]: failed to open stream: No such file or directory
Fatal error: require_once() [function.require]: Failed opening required '1' (include_path='.;C:\xampp\php\pear\')
というエラーが出てしまいます。
「No such file or directory」はファイルがないということですが、同じフォルダにその名前のファイルが存在します。
他に何か思い当たることはないでしょうか・・・?
0197nobodyさん
2007/08/30(木) 04:45:29ID:???0198nobodyさん
2007/08/30(木) 04:50:46ID:cbvqe7SVor die()ってできないんですね
返り血考えるの忘れてました
0199nobodyさん
2007/08/30(木) 09:58:09ID:???0201nobodyさん
2007/08/30(木) 10:18:40ID:3muSx8fZPHPである項目を、セレクトボックスでの選択か、もしくは
テキストボックスへの入力にさせたいのです。
つまり、セレクトボックスでの選択かテキストボックスに入力かが
されていればOKで、両方になにもない場合のみ「選択しろ」という
エラーメッセージを出したいのですが、どうしたらいいですか?
// 営業所コード
if($_POST['g_c'] == '') {
$err_u .= '[営業所コード]が未選択です。<br>';
}
// 営業所の名前
if($_POST['g_n'] == '') {
$err_u .= '[営業所の名前]が未入力です。<br>';
}
現在エラーメッセージを出させる記述はこうなっているのですが、
この場合はどちらかが未入力・未選択でもエラーが出ます。
[営業所コード] か、[営業所の名前] どちらかが選択・入力されていればOK
というようにはどうしたらいいのか、すみませんが教えてください。
0202nobodyさん
2007/08/30(木) 10:24:45ID:???0203nobodyさん
2007/08/30(木) 11:00:36ID:Qqw8XwhJarray_push()はどんな利用目的で使うのが正しいのでしょうか?
マニュアルを見る限りarray_push()をつかうなら関数を呼ぶオーバーヘッダ
のない$array[] = のほうが良いとかいてありました。
0204201
2007/08/30(木) 11:03:53ID:3muSx8fZ0205nobodyさん
2007/08/30(木) 11:15:13ID:???自分でインデックス管理して最後尾に追加するなりのコードを
書くなら$array[] =...でいんじゃね。
0206nobodyさん
2007/08/30(木) 11:17:27ID:???pop, shift, unshiftと作ってpushも作らざるを得なかっただけなので使う必要なし
配列に配列を加えるときには使ってもいいよ
似たような関数にarray_merge( )もあるけどね
0207nobodyさん
2007/08/30(木) 11:44:06ID:Qqw8XwhJありがとうございます
0209nobodyさん
2007/08/30(木) 14:33:45ID:OWaQUMa6basic認証よりはセッションで管理するほうがいいですか?
0211nobodyさん
2007/08/30(木) 14:47:36ID:OWaQUMa6セッション使うことにします
0212nobodyさん
2007/08/30(木) 17:43:29ID:bLGc1mde良ブログ ですか?
0213nobodyさん
2007/08/30(木) 18:00:15ID:???0214nobodyさん
2007/08/30(木) 18:02:30ID:???0215nobodyさん
2007/08/30(木) 18:30:42ID:???Perlの場合、日本語や絵文字を処理することを考慮し、例えばSJISで
画面を出力する場合でも、ソースはEUC、処理内でJcode等を使用
してSJIS出力するようなことをしておりましたが、PHPの場合はどの
文字コードで書くのが一番問題等発生しにくいのでしょうか。
ご教示いただけますと幸いです。
0216nobodyさん
2007/08/30(木) 18:35:39ID:???0217nobodyさん
2007/08/30(木) 18:36:08ID:Qqw8XwhJ基本的なことはperlと同じ
■ このスレッドは過去ログ倉庫に格納されています