【PHP】下らねぇ質問はここに書き込みやがれ 54
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/09/09(日) 12:42:57ID:64tYOx8RPHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 53
http://pc11.2ch.net/test/read.cgi/php/1188047468/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0712nobodyさん
2007/09/21(金) 23:20:17ID:???0713nobodyさん
2007/09/21(金) 23:22:41ID:QV6ADNltPHPからのデータをデータベースに格納するとき、文字化けしてしまいます。
php.iniのenternal_encodingはutf-8、mysqlのdefault-charsetはutf8、データベースの照合順序はutf8_general_ciとなっています。
この解決方法として、データベースに格納するときに、
SET NAMES utf-8;
というクエリを発行すると良いということが分かったのですが、そのほかに方法はありますか?
よろしくお願いします。
0714nobodyさん
2007/09/21(金) 23:25:36ID:???FWなんかだと回避方法が色々あるかもしれんが
べた書きでSQLのバージョンがいくつか忘れたがある以上のバージョンだとそれしかない。
0715nobodyさん
2007/09/21(金) 23:39:38ID:???http://blog.ohgaki.net/index.php/yohgaki/2007/08/22/set_namesa_mcb_asc
SET NAMESは禁止?
http://cakephp.seesaa.net/article/52562968.html
0716nobodyさん
2007/09/21(金) 23:47:48ID:QV6ADNltありがとうございます。
文字コード問題、難しいですね。
とりあえず今は開発段階なので、自分のサーバのMySQLの[mysqld]のところに、
skip-character-set-client-handshake
を記述して一時退避と思います。
0717nobodyさん
2007/09/22(土) 06:08:18ID:+WbXSWsdhttp://example.com/ほげほげ/でアクセスした場合、mod_rewriteで?wd=ほげほげにして渡したいのですがこれをすると500エラーになります。
文字コードの影響かと思いmb_convertしてみましたが変わりありません。
どんな方法がありますでしょうか?
0718nobodyさん
2007/09/22(土) 06:46:17ID:???0719nobodyさん
2007/09/22(土) 07:12:11ID:???EUC-JPをUTF-8に変換すると、
「プロバイダー」が「プロ ff8 バイダー」になったり、ならなかったり、
「退会」が「退 198 会」や「退 ffa 会」になったり、ならなかったり…
これは既知のバグなのでしょうか?何か設定がおかしいのでしょうか?
環境はPHP4.4.7cliで、
mb_regex_encoding('UTF-8');
mb_internal_encoding('UTF-8');
mb_substitute_character(63);
を指定しています。スクリプトの文字コードはUTF-8です。
0720nobodyさん
2007/09/22(土) 07:13:25ID:v/rJVSv70721nobodyさん
2007/09/22(土) 07:21:03ID:???0722nobodyさん
2007/09/22(土) 07:24:14ID:v/rJVSv7回避方法とかは無いのでしょうか?
0723nobodyさん
2007/09/22(土) 07:27:30ID:???0724nobodyさん
2007/09/22(土) 07:30:04ID:v/rJVSv7ちょっと投げやりすぎる回答が気になるので、ソースをお願いします。
0725nobodyさん
2007/09/22(土) 07:35:48ID:???http://www.bulldog.co.jp/ ブルドックソース株式会社 東京都
http://www.kagome.co.jp/ カゴメ株式会社 愛知県
http://www.otafuku.co.jp/ オタフクソース株式会社 広島県
http://www.ikari-s.co.jp/ イカリソース株式会社 大阪府
http://www.kikkoman.co.jp/ キッコーマン株式会社 千葉県
http://www.oliversauce.com/オリバーソース株式会社 兵庫県
http://www.sky-net.or.jp/toshi/ カープソース 広島県
http://www.maruki-su.com/ 株式会社 川上酢店 愛知県
http://www.kozima.co.jp/ 小島食品製造株式会社 愛知県
http://www.komi.co.jp/ コーミ株式会社 愛知県
http://www.sankyohikari.co.jp/ サンキョーヒカリ 愛知県
http://www.junmaru.co.jp/ 株式会社 純正食品マルシマ 広島県
http://www.papaya-sauce.co.jp/ パパヤソース本舗 大洋産業株式会社 京都府
http://www.takahashisauce.com/ 高橋ソース株式会社 埼玉県
0726nobodyさん
2007/09/22(土) 07:38:06ID:v/rJVSv70727nobodyさん
2007/09/22(土) 09:16:45ID:???0728nobodyさん
2007/09/22(土) 09:19:09ID:???0729nobodyさん
2007/09/22(土) 09:26:47ID:???fputs で HTTP/1.1 使ってるのが原因でした。
HTTP/1.0 にして解決しました。ありがとうございました。
0732nobodyさん
2007/09/22(土) 14:32:49ID:RkVrJ9bm私のサイトのすぐ下に、私のサイトを全部ひらがなに変換しただけの他人のサイトがヒットしました
私は広告が嫌いなので、
広告掲載依頼が来ても全部断るようにしてきました
しかし、私のサイトをひらがなに変換しただけのサイトはgoogleアドをベタ張りしています
このサイトは私のサイトの真下にきているので、
この広告ベタベタサイトが私の運営しているものだと勘違いされるのも嫌ですし、
私のサイトのソースを無断でコピーされているのも嫌です
このサイトに私のサイトの翻訳をさせない方法はないでしょうか?
ちなみにその翻訳を行っているサイトはこれです
http://www20.learnjapan.org/
例)
きれいな字を書こう! 小学生の漢字!! (誰かのオリジナルサイト)
http://www.geocities.jp/ki07ji/index.html
きれいな字を書こう! 小学生の漢字!! (上のサイトを全部ひらがなに翻訳)
http://www.learnjapan.org/km/aHR0cDovL3d3dy5nZW9jaXRpZXMuanAva2kwN2ppL2luZGV4Lmh0bWw=.html
0733nobodyさん
2007/09/22(土) 14:33:58ID:???0734733
2007/09/22(土) 14:36:28ID:???0737nobodyさん
2007/09/22(土) 16:34:13ID:xEVbhTq3こういうのって法的にはどうなんだろうね。
当事者じゃないからどうでもいいけど気にはなる。
とりあえず、
っttp://www.houterasu.or.jp/
無料で相談できるから、やってみれば?
0738nobodyさん
2007/09/22(土) 16:39:01ID:???これが違法ならGoogleとかのキャッシュや
WEB翻訳サービスも違法になるんじゃないか?
当事者同士で話し合うしか無いと思う。
そのサイトからのアクセスをはじけばいいだけのような気も
0739nobodyさん
2007/09/22(土) 16:44:36ID:6iih+fTYどうすればうまく出力されますか?
<?php
$str=<<<XHTML
//XHTMLの記述
XHTML;
echo $str;
?>
ではだめで、単にファイル名を.xmlとして記述すると
今度はPHPが読み込まれません。
サーバーのMIMEタイプとかの問題なんでしょうか?
0740nobodyさん
2007/09/22(土) 17:08:00ID:???>サーバーのMIMEタイプとかの問題なんでしょうか?
どちらかというと、雅子が男子を産もうとしない方の問題。
0741nobodyさん
2007/09/22(土) 18:04:34ID:???任意の文字列を2分割にsplitして出来た2つの文字列を それぞれ連想配列のキーと値に入れたいんだけどどうやるの?
下みたいにやると普通の配列(要素数2)で保存されてしまうのです
$foo = split('/', $hoge, 2);
0742nobodyさん
2007/09/22(土) 18:14:49ID:6iih+fTY$arr[$foo[0]]=$foo[1];
0743nobodyさん
2007/09/22(土) 18:19:40ID:Jfl+L6xkそうですか('A`)ありがとうございます
ではsplitした要素の片方だけを 変数に格納せず そのまま取り出すことは可能でしょうか
perlだと
split('/', hoge, 2)[1]
みたいなことが出来たんですが phpはできないみたいで・・
0744nobodyさん
2007/09/22(土) 20:23:24ID:???0745717
2007/09/22(土) 20:49:14ID:+WbXSWsdwikipediaではURLに日本語が入っているのですがこんなことをxreaでできますでしょうか?
http://example.com/ほげほげ
これを内部的にswitchで読み込むHTMLを変換して表示させたいのです。
mod_rewriteで/以下を?id=に
switch($_GET['id']) {
case 'ほげほげ':
readfile(hogehoge.html);
break;
・・・・
}
0749nobodyさん
2007/09/22(土) 22:13:23ID:???phpは配列にしたら一度変数に格納しないとエラーになるですよ
だから他の言語みたくsplit(....)[0]と一回で出来ないのが難点
0751nobodyさん
2007/09/22(土) 22:24:12ID:???他の言語っつーか、そんなことできるPerlの方が言語としては気持ち悪いんだけどな。
PHPの仕様はごくごく普通ですよ。
0753nobodyさん
2007/09/22(土) 23:00:01ID:???0754nobodyさん
2007/09/22(土) 23:04:16ID:???safenameっていう関数か変数か知らないですけど、ありますか?
あ あ あ
だと
あ_あ_あ
になるみたいなんですが
他のスクリプトでも使ってみようと思い試したら
Fatal errorが出ました><
ごきようじゅ下さい お願いします><
0755nobodyさん
2007/09/22(土) 23:13:15ID:???0756nobodyさん
2007/09/22(土) 23:13:31ID:???0758754
2007/09/22(土) 23:17:50ID:JPmP1x2o↑
読み方しりません><
0759nobodyさん
2007/09/22(土) 23:22:18ID:???0760nobodyさん
2007/09/22(土) 23:43:27ID:???0762nobodyさん
2007/09/23(日) 10:48:42ID:8QFSYDARclass A
{
public $a = 'hoge';
}
$b = ○○○; // Aの$aを取得したい
0763nobodyさん
2007/09/23(日) 12:09:09ID:???publicって書いてるって事はphp5として考えるけど
5ならconstにするかメソッド作ってカプセル化すればいいのに
0764762
2007/09/23(日) 12:13:07ID:8QFSYDARご回答ありがとうございます。
Aが変数(AだったりBだったり)なので、class_get_varsした後に取り出しました。
0765nobodyさん
2007/09/23(日) 12:14:54ID:???echo A::$a; ~~~~~
0766nobodyさん
2007/09/23(日) 12:17:54ID:???http://php.benscom.com/manual/ja/language.oop5.static.php
0767nobodyさん
2007/09/23(日) 13:22:33ID:ByDzcAVcecho "正解";
}
これ書き方あってますよね?
===を使う場合、trueを"で囲むと文字列になるから
囲まないで書くべきですよね?
0768nobodyさん
2007/09/23(日) 13:30:20ID:???== は、値(暗黙の変換含む)の一致で true になる
=== は、値と型両方が一致した場合のみ true になる
$a = 1;
if ($a == true) // 暗黙の変換により true になる
if ($a === true) // intとboolで型が違う為 false になる
0769nobodyさん
2007/09/23(日) 13:38:01ID:x8KAGuvr0771nobodyさん
2007/09/23(日) 13:47:13ID:???0772743
2007/09/23(日) 14:26:13ID:???言えてる
javaとperlがメインだったけど perlは相当気持ち悪い でも適当でもOKだから仕事以外で便利
phpも相当気持ち悪いが どうせ気持ち悪いならperl並に徹底してくれないと困る
0774nobodyさん
2007/09/23(日) 15:25:01ID:???だから.=は+=とおんなじ意味
$str = "hoge";
$str .= "huga";
echo $str;
hogehuga
0775nobodyさん
2007/09/23(日) 16:23:22ID:giEVgmm5どうやったらenableになるのかわからなくて気持ち悪い・・・
0776nobodyさん
2007/09/23(日) 16:36:28ID:???queryAll等の結果セットをfree()で解放してあげましょうとなっています。
queryAllをした直後に結果セットの内容を使うのであれば、すぐにfree()してしまえば
良いと思うんだけど、その結果セットをその後の処理でも使いまわす場合は、どうするのが
一番良いのでしょうか?
今考えてるのは、結果セットを新しく作った配列にコピー後に、結果セットはfree()してしまおうかと
思っているのですが、何となく無駄な事をやってる気がして・・・。
0779775
2007/09/23(日) 17:42:36ID:giEVgmm5スマン、書き込む前に必死にググッたりマニュアル読んでみたり
関連リンク回ったりしてみたんだが見つからなかったんだ。
もう少し調べてみるわ。ありがとう。
0780nobodyさん
2007/09/23(日) 18:04:44ID:20rGQLTi複数の文字列の共通項を取り出す処理をしたいのですが、
そのような便利な関数がありますでしょうか?
例
$a = "テレビを昨日見た。";
$b = "昨日テレビを見た。";
$c = "テレビを明日見る。";
$result = function_X($a, $b, $c);
echo $result;
$resultが$a、$b、$cの共通項の「テレビを」が出力されると、
いいのですが、substrとかで一文字ずつの総当りの組み合わせで共通項の検査すると、
ものすごい計算量になるので、何とかもっと簡単な方法はないかと悩んでいます。
宜しくお願いします。
0781nobodyさん
2007/09/23(日) 18:05:38ID:???0782nobodyさん
2007/09/23(日) 18:09:03ID:20rGQLTiレスありがとうございます。
形態素解析も考えたのですが、今回は文法レベルで単語分けをする必要がなく、
又英語などや記号も混じってしまうので、機械的に複数変数の共通部分の文字列のみを
取得したいと思っています。
言葉足らずですみません。引き続きよろしくお願いします。
0783nobodyさん
2007/09/23(日) 18:11:05ID:???0784nobodyさん
2007/09/23(日) 18:13:29ID:CMYUgsUj0785nobodyさん
2007/09/23(日) 20:24:31ID:???0786nobodyさん
2007/09/23(日) 22:59:17ID:d1xYr/ljperlのtruncateに該当するphpの関数ってありますか?
0787nobodyさん
2007/09/23(日) 23:04:55ID:???0788nobodyさん
2007/09/23(日) 23:09:14ID:???答える気が無いなら、書き込まなきゃいいのに。
0792nobodyさん
2007/09/23(日) 23:49:44ID:mTLKY/f7初歩的な質問で申し訳ないのですが、どなたかご教示願えませんか?
よろくしお願いします。
______________________
| 一段目 | td一 | td二 | td三 | td四 | td五 |
| 二段目 | td六 | td七 | td八 | td九 | td十 |
| 三段目 | td一 | td二 | td三 | td四 | td五 |
| 四段目 | td六 | td七 | td八 | td九 | td十 |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0795nobodyさん
2007/09/23(日) 23:59:57ID:???くだ質だからなんでも質問すりゃいいって、どんだけユトリなのよ
0796nobodyさん
2007/09/24(月) 00:24:55ID:JxEty0kG編集してて遅くなりました。ごめんなさい
こう書いたんですがこれじゃ駄目ですよね…
>>792みたいな横に長いテーブルを出したいのですが(;´Д`)
echo "<table>";
$table = array (
"一段目" => "td一", "td二", "td三", "td四", "td五",
"二段目" => "td六", "td七", "td八", "td九", "td十",
"三段目" => "td一", "td二", "td三", "td四", "td五",
"四段目" => "td六", "td七", "td八", "td九", "td十"
);
foreach ($table as $key => $value) {
echo "<tr>";
echo "<td>$key</td>";
echo "<td>$value</td>";
echo "</tr>";
}
echo "</table>";
0798nobodyさん
2007/09/24(月) 00:56:56ID:Wq/5iUlOforeach ($table as $key => $value) {
if(!is_numeric($key)){
echo $tr."<tr>";
echo "<td>$key</td>";
$tr = "</tr>";
}
echo "<td>$value</td>";
}
echo "</tr>";
echo "</table>";
0801nobodyさん
2007/09/24(月) 01:30:21ID:???これって
$table[一段目], $table[0], …$table[二段目], $table[4], …
こういう配列になるわけだろ?何が嬉しいのかわかんない
0802796
2007/09/24(月) 01:55:21ID:JxEty0kGできました!
何が嬉しいのかと言われたら確かにその通りですが(;´Д`)
ありがとうございました。
0803798
2007/09/24(月) 02:10:26ID:Wq/5iUlO上の方で言われてるようにその配列は使い勝手が悪いです。
柔軟性に欠けますから工夫が必要です。
頑張ってください。
0804nobodyさん
2007/09/24(月) 03:46:09ID:???> $table = array (
> "一段目" => "td一", "td二", "td三", "td四", "td五",
> "二段目" => "td六", "td七", "td八", "td九", "td十",
> "三段目" => "td一", "td二", "td三", "td四", "td五",
> "四段目" => "td六", "td七", "td八", "td九", "td十"
> );
これって本当は
$table = array (
"一段目" => array("td一", "td二", "td三", "td四", "td五"),
"二段目" => array("td六", "td七", "td八", "td九", "td十"),
"三段目" => array("td一", "td二", "td三", "td四", "td五"),
"四段目" => array("td六", "td七", "td八", "td九", "td十"),
);
ってしたかったわけじゃないのか?
見た目と構造が全然かみ合ってないそ。
0805nobodyさん
2007/09/24(月) 06:52:38ID:???その構造なら条件分岐がいらないね
printf("<table>\n");
foreach($table as $key => $list){
printf("<tr><td>%s</td>", $key);
foreach($list as $value){
printf("<td>%s</td>", $value);
}
printf("</tr>\n");
}
printf("</table>\n");
0808nobodyさん
2007/09/24(月) 12:43:32ID:aGF/5enb"0" => "一段目",
"1" => "二段目",
"2" => "三段目",
"3" => "四段目",
);
$table_values = array (
"0" => array("td一", "td二", "td三", "td四", "td五"),
"1" => array("td六", "td七", "td八", "td九", "td十"),
"2" => array("td一", "td二", "td三", "td四", "td五"),
"3" => array("td六", "td七", "td八", "td九", "td十"),
);
$table_count = count($table_names);
こうしないでいいの?
俺てっきりマルチバイトダメだと思ってたよ
0809nobodyさん
2007/09/24(月) 13:15:20ID:???0810nobodyさん
2007/09/24(月) 13:24:01ID:???そもそも配列の要素数が行毎に異なるなんてのは考えたくないけど。
つじつま合わせの補完計画。
$maxcount = 0;
foreach($table as $list){
if($maxcount < count($list))
$maxcount = count($list);
}
printf("<table>\n");
foreach($table as $key => $list){
$list = array_pad($list, $maxcount, "-");
printf("<tr><td>%s</td>", $key);
foreach($list as $value){
printf("<td>%s</td>", $value);
}
printf("</tr>\n");
}
printf("</table>\n");
0811nobodyさん
2007/09/24(月) 13:37:12ID:BGlF/jIi登録フォームで間違えた時は、そのページの上部にエラーメッセージが出る
と言った処理方法だとします。
エラーがある場合、セレクトメニューに入力した値が消えてしまうのですが、
以下のような方法以外に、出来るだけ簡単に対処出来ないでしょうか?
function selectForm($form_name,$val){
$names = array("あああ","いいい","ううう");
echo "<select name=\"$form_name\">";
for($i=0;$i=count($names);$i++){
if($names)[$i]=="$val"){
$selected='selected="selected"';
}else
$selected="";
}
echo "<option value=\"$val\" $selected>$val</option>\";
}
echo "</select>";
}
selectForm("test",$_POST["test"]);
0812nobodyさん
2007/09/24(月) 14:05:59ID:3GSML6xRif (is_array($vals)){
array_map(array($this,'valsclear'),&$vals);
}else{
$vals = '';
}
値だけを消去したいのですが、どうしたら良いでしょうか?
■ このスレッドは過去ログ倉庫に格納されています