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

【PHP】下らねぇ質問はここに書き込みやがれ 24

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/07/07(金) 14:54:53ID:KnVubDvE
PHPに関するくだらねぇ質問用スレです。
ここならお前の下らない質問に回答があるかも知れません。

まず読め【PHP マニュアル】
http://www.php.net/manual/ja/

過去スレは>>2
0439nobodyさん2006/07/14(金) 23:54:51ID:???
画像認証は視覚障害者にあまりにも不親切だからいずれ廃れると思うけどね。
0440nobodyさん2006/07/14(金) 23:55:40ID:???
>>438
可能です
0441nobodyさん2006/07/15(土) 00:04:59ID:???
>>438
PEAR::Text_CAPTCHA
ttp://pear.php.net/package/Text_CAPTCHA
ttp://pear.plus-server.net/package.text.text-captcha.html
紹介ページ
ttp://www.doyouphp.jp/sample/sample_others_captcha.shtml
ttp://kawama.jp/archives/2006/05/peartext_captch.html
ttp://blog.poyo.jp/archives.php/categ-1/year-2005/month-1/id-1106990727
0442nobodyさん2006/07/15(土) 10:01:30ID:???
>>418-419
preg_grep というすばらしい関数がある。

$mutches = preg_grep('/hoge/', $line);
0443nobodyさん2006/07/15(土) 10:02:55ID:???
grep は、perlだと、正規表現だけでなく条件の真偽を元に配列を返えす使い方もできるんだが、
PHPだと無理?
0444nobodyさん2006/07/15(土) 10:54:50ID:???
>>443
無理じゃね?PHPの関数はそういう本来の用途外に使うような汎用性は持たせない作りになってるし。
04454382006/07/15(土) 11:03:38ID:???
>>441
おおっありがとうございます!!!!
感謝です!
0446nobodyさん2006/07/15(土) 12:13:33ID:DUyjY8jk
ある条件(ゲームに勝つ等)をクリアした者だけにファイルをダウンロードさせるスクリプトを書こうとしてます。
phpをCGI(Suexec)で動かして、ダウンロードさせるファイルのパーミッションを400にし、↓のようなスクリプトでダウンロードさせようと考えています。

if(ある条件をクリアしたら){
 header("Content-Disposition: inline; filename=\"".basename($path_file)."\"");
 header("Content-Length: ".$content_length);
 header("Content-Type: application/octet-stream");
 if (!readfile($path_file)) {
  die("Cannot read the file(".$path_file.")");
  }
 }

この場合、ダウンロードさせるファイルは、99%不正にダウンロードされないと思っていいのでしょうか?
あと、他にパフォーマンスやセキュリティ面で勝る方法があれば、教えていただけるとありがたいですm(_ _)m
0447nobodyさん2006/07/15(土) 12:16:29ID:???
>>446
$path_fileとかいうのがDOCUMENT_ROOT以下に置いてないんなら
まー不正ダウンロードされることはないっしょ。
あとはそのif条件を不正に成立されたりしないかくらいでないの?
0448nobodyさん2006/07/15(土) 12:28:11ID:???
>>447
レスありがとうございます

DOCUMENT_ROOT以下においた場合はかなり危険ですか?
0449nobodyさん2006/07/15(土) 12:41:31ID:???
>>448
パーミッション400なら大丈夫じゃないかな
ついでに.htaccessで制限しとけば
0450nobodyさん2006/07/15(土) 12:46:12ID:DUyjY8jk
>>449
安心しました。ありがとうございますm(_ _)m
念のため.htaccessも使おうと思います
0451nobodyさん2006/07/15(土) 13:19:27ID:dl9oNIQi
>>443
そういうのはarray_filterとかarray_reduceだと思うけど、grepと比べたら使い勝手は悪いかも。
0452nobodyさん2006/07/15(土) 13:35:16ID:???
つか、全般的にPHPの関数は融通という意味ではPerlほどの使い勝手は無いよ。
PHPの関数はあくまでC言語ライクだが、Perlの関数はシェルスクリプトライクなわけで。
でも、だからこそ誰が書いても比較的一定のコーディングスタイルを保ってられるんだと思うけどね。
0453nobodyさん2006/07/15(土) 14:37:30ID:RYeH9Y82
 PHPの文字コードについて質問なのですが、どなたか教えて頂けますでしょうか。
環境は、SunCobaltRedHatLinux7.0+PHP5.0.4+nkf2.0.4です。
「ココ,ココリコ,ココ数」とだけ書いたsample1.csvをUTF-8(改行コードCR+LF)
で作成します。そして、test1.phpというファイルをUTF-8(改行コードCR+LF)で
作成し、<input type="file"〜>でファイルアップロードが出来、fgetcsvで、
アップロードしたCSVファイルの要素を取得出来るように、test1.phpに記述します。
test1.phpに、
list($field1,$field2,$field3)=fgetcsv(アップロードしたファイル名);
print("1番目".$field1."2番目".$field2."3番目".$field3);
と書くと、
「1番目??コ2番目??コリコ3番目??コ数」
と、先頭の文字が「??」に文字化けしてしまうのです。この原因は、どなたかお分
かりでしょうか?先頭の「コ」以外は文字化けしていないので、「コ」という文字
が原因ではないと思います。test1.phpの先頭に「mb_internal_encoding();」と書く
と、「ISO-8859-1」と出て来ました。これが原因かと思って、
「mb_internal_encoding("UTF-8");」としたのですが、やはり同じ文字化けのままでした。

 ちなみに、他のPCにFedoraCore2+PHP5.0.4+nkf2.0.4をインストールし、全く同じ(!)
sample1.csvとtest1.phpで試した結果、「1番目ココ2番目ココリコ3番目ココ数」と
なり、正しく表示されました。けれども、本番機はSunCobaltRedHatLinux7.0で動いて
いますので、本番機の文字化けを直さなくてはならないのです。どなたかお分かりで
しょうか?教えて頂ければ、幸いです。
0454nobodyさん2006/07/15(土) 14:47:39ID:???
>>453
とりあえず、サーバにアップロードした後のcsvファイルを確認してみて、
異常がないか調べてみれば?
04552322006/07/15(土) 14:50:39ID:???
preg_match_al関数で質問があります。

<?php
preg_match_all("|<[^>]+>(.*)</[^>]+>|U",
"<b>example: </b><div align=left>this is a test</div>",
$out, PREG_PATTERN_ORDER);

print_r($out);

?>

以上を実行すると以下の配列が出力されます。

Array ( [0] => Array ( [0] => example:
               [1] => this is a test
     [1] => Array ( [0] => example:
              [1] => this is a test ) )

これだと配列が取り出しにくいので

Array ( [0] => example:
      [1] => this is a test )

↑こんな感じに$outに配列を格納することは出来ませんか?
0456nobodyさん2006/07/15(土) 14:51:40ID:???
>>453
mbstring.language は何になってんの?
0457nobodyさん2006/07/15(土) 14:57:03ID:???
>>455
単に $out = $out[0]; しちゃダメなの?
0458nobodyさん2006/07/15(土) 15:16:53ID:RYeH9Y82
>>453です。

>>454様。>>456様。ご返答、ありがとうございます。
今、本番機から離れた所にいますので、数日経ちましたら、調べて
みます。
ちなみに、>>454様のおっしゃる通り、「サーバにアップロードした
後のcsvファイルが異常」だとしたら、どのようなことが原因なの
でしょうか?普通に<input type="file" 〜>と書いているだけなの
ですが、それでもアップロードが異常になることがあるのでしょうか?

また、>>456様のおっしゃる通り、「mbstring.language」が原因だと
したら、「mbstring.language」はどのように設定すべきなのでしょう
か?「mbstring.language」が「neutral」であれば「Japanese」に変え、
「mbstring.language」が「Japanese」であれば「neutral」に変えてみ
るのが良いのでしょうか?
0459nobodyさん2006/07/15(土) 15:22:14ID:???
>>458
商業でスクリプト組んでんのに、自分で試してから聞け
0460nobodyさん2006/07/15(土) 16:40:47ID:47sj2xHF
arrayに入っている12の文字列の順番をランダムで入れ替えたいのですが、
どのようにすればよいのでしょうか?

array("1番目","2番目","3番目","4番目","5番目","6番目","7番目","8番目","9番目","10番目","11番目","12番目");

[0]1番目
[1]2番目
[2]3番目
[3]4番目
[4]5番目
[5]6番目
[6]7番目
[7]8番目
[8]9番目
[9]10番目
[10]11番目
[11]12番目

[0]1番目
[1]2番目
[2]5番目
[3]6番目
[4]1番目
[5]12番目
[6]7番目
[7]8番目
[8]10番目
[9]9番目
[10]8番目
[11]11番目

並び方はランダムでお願いします。
0461nobodyさん2006/07/15(土) 16:45:20ID:???
>>460
そこまで書いてやり方が思いつかないのか?
0462nobodyさん2006/07/15(土) 16:54:57ID:???
>>460
この問題は配列がというより、
非復元抽出で番号が書いたタマを取り出していく考えでいけばいいな。
0463nobodyさん2006/07/15(土) 17:16:36ID:dl9oNIQi
いくらくだ質でも、マニュアルの索引だけ見ても答えが出るのは勘弁してほしいね。
0464nobodyさん2006/07/15(土) 17:17:14ID:???
関数一個だな
0465nobodyさん2006/07/15(土) 17:20:39ID:???
とりあえず、今は使わない関数でも、マニュアルは一通り全部読んでおいた方がいいよ。
あとで使うときになって「そういえば、こんなような関数どっかにあった気がする」と気づくから。
0466nobodyさん2006/07/15(土) 17:21:35ID:???
>>457
ありがとうございます
0467nobodyさん2006/07/15(土) 17:24:55ID:???
要素が10個入った配列から、要素を5つ表示したいと思っています。

しかもランダムに、値が重複しないように表示したいのですが、
どういった関数を利用すればいいんでしょうか?
0468nobodyさん2006/07/15(土) 17:29:25ID:???
標準じゃないから、重複しないように、ランダムに5個抽出する関数を作ればいいと思うよ。
0469nobodyさん2006/07/15(土) 17:31:05ID:???
ああ、ちょっと不親切だった気がするので
array_rand
array_slice
とか使って書きなはれ。
0470nobodyさん2006/07/15(土) 17:34:47ID:???
array_randじゃなくてshuffleだったわ。
0471nobodyさん2006/07/15(土) 18:01:13ID:???
プログラミングとは結果を得るための手順を考えることだ。
手順さえ思いつけば8割がた出来たも同じ。後は利用する
プログラミング言語の文法に従って書けば良いだけだからな。

その手順を考えることを放棄するような奴ってなに考えてるんだろうね?
この世に不要なんだよ。存在自体が。

ここはくだ質スレだが、こういう結果が欲しくてこういう手を考えたが
もっとスマートな方法は無いか?とかどういう関数が使えるか?
ちうことを聞くところだ。
考えることを放棄するような奴はイラネ。うせろ。
0472nobodyさん2006/07/15(土) 18:36:26ID:???
>>471
詰まるところここはゴミプログラマ養成所なんだよ
0473nobodyさん2006/07/15(土) 20:42:33ID:???
ifで「昨日以前なら」で条件を作りたいのですが、
date(Ymd,strtotime("-1 day"))
これは昨日限定ですよね?
昨日以前というのは指定できないのでしょうか?
0474nobodyさん2006/07/15(土) 21:42:58ID:???
>>473
日付で比較すれば良いだけだろ?
0475nobodyさん2006/07/15(土) 21:53:38ID:???
UNIXタイムを使え。
0476nobodyさん2006/07/15(土) 22:31:25ID:QlSeqY/9
PHP5でグローバルに参照する定数を使いたい場合、

・ファイルにしてインクルードする
function foo()
{
  include( "globals.php" );
  echo $var;
}

・クラスにして参照する
class CGlobals{
  static $var = 123;
}
function foo()
{
  echo CGlobals::$var;
}

・$GLOBALSを使う
function foo()
{
  echo $GLOBALS['var'];
}

のどれが好ましいでしょうか
もしくはこれ以外にもっと好ましい方法がありますでしょうか
0477nobodyさん2006/07/15(土) 22:34:02ID:???
>>476
グローバル変数を使うような処理を書くな
0478nobodyさん2006/07/15(土) 23:56:56ID:???
>>476
定数ならdefine()のあれをまず考えて
次に2番目のクラスにして参照する方法かな
0479nobodyさん2006/07/15(土) 23:57:29ID:sY8c/3Bb
mb_ereg_search_regs関数の使い方についての質問です。

$str="aa<a>bb</a>aa"

$strから<a></a>に挟まれた文字列を
取得したいのですが、
どう記述すればいいでしょうか?
サンプルソースを頂けないでしょうか。
0480nobodyさん2006/07/16(日) 00:08:15ID:???
>>479
まずはどうやって失敗したかを書いてくれ
0481nobodyさん2006/07/16(日) 00:16:25ID:???
echo <<< HTML
aaa<br>
bbb<br>
ccc<br>
HTML;

これのような出力を一気に配列に入れる方法を教えてください。
04824792006/07/16(日) 00:25:47ID:???
>>480
こんな感じで書いたら

<?php

$str="aa<a>bb</a>aa"
$a_resulet=mb_ereg_search_regs("<a>*</a>",$str);

?>


こんなんになりました

Warning: mb_ereg_search_regs() [function.mb-ereg-search-regs]: No string given in /usr/local/apache2/htdocs/test.php on line 4

0483nobodyさん2006/07/16(日) 00:42:48ID:???
>>482
そのソースを丸々コピーしたら俺の環境ではsyntaxエラーだ
0484nobodyさん2006/07/16(日) 00:45:50ID:???
>>481
ob_start();
echo <<< HTML
aaa<br>
bbb<br>
ccc<br>
HTML;
$array = explode("\n", ob_get_contents());
//$array = preg_split("/\r\n|\r|\n/", ob_get_contents());
ob_end_clean();

print_r($array);
0485nobodyさん2006/07/16(日) 02:33:24ID:???
explodeやsplitでcsv形式のデータを配列に格納しようとしてるんですが、
データの中にカンマが含まれている場合、そこで配列の項目として切っちゃいますよね?

そういう場合は本業プログラマさんは普通どういう方法で処理するものなんでしょうか?
よろしくお願いします。
0486nobodyさん2006/07/16(日) 02:55:40ID:???
まだ学生で本業じゃないけど普通に考えて別の文字に置き換えるでしょ
別に決まりはないはず
たとえば単純に2byte文字「,」にするとか
特殊文字「&#44;」(&amp;#44;)にするとかね
0487nobodyさん2006/07/16(日) 02:57:42ID:???
>>485
普通は処理がしやすいようにデータフォーマットを作る。
例えばタブ区切りにするとか。

CSVつうてもエスケープのしかたで何種類かあるので
既存のデータなら、それに合わせて処理する。
EXECLの吐くやつとかだと処理ライブラリもあるけど
上手くいかないことも。
0488nobodyさん2006/07/16(日) 03:20:47ID:???
CSV形式も方言がいろいろあるが、 " で囲めば間違いない。
というか、変な置き換えをするのはウンコ。
置き換えは " だけ。"" と2回連続させる。
0489nobodyさん2006/07/16(日) 04:14:19ID:???
>>485
区切り文字には気をつけろ!
カンマ区切りの場合「ソ」の直後に「"」が来るとバグる関数がある(fgetcsvとか)

まぁ、そういうところを考えるのもプログラミングの楽しいところだな
・・・苦しむところでもあるが
0490nobodyさん2006/07/16(日) 04:25:50ID:???
>>471
>>473 みたいのが全てを表してると思う。
彼らはコーディングをアルゴリズムとは思っておらず
「指定すれば指定した通りの結果が出てくる」という
PHPを単なるツール、アプリケーションの操作と勘違いしている。
0491nobodyさん2006/07/16(日) 04:28:48ID:???
コーディングはアルゴリズムじゃないだろwwwwwwwwwwwwwwww






言いたい事は分かるけどね。
0492nobodyさん2006/07/16(日) 04:33:07ID:???
彼らが知りたいのは公式と解法テクニックであって
そこに至るまでの考え方など無用の長物なのだ
0493nobodyさん2006/07/16(日) 05:18:14ID:???
>>471 >>490-492
よかった。まだ俺と同じ考えのヤツがいたんだ。
このスレ、だんだん丸投げスレになってきたんでどうしようかと思ってた。
0494nobodyさん2006/07/16(日) 05:31:42ID:???
くだ質ってそういうもんでしょ?
答えたくないなら答えなくても良いし
0495nobodyさん2006/07/16(日) 05:45:48ID:???
>>494
>>471
つか、オマエ質問してる方だろ
0496nobodyさん2006/07/16(日) 05:51:09ID:???
そうですが、何か?

もっとも質問したのは1回だけですけど。あとはたまに覗いてます
0497nobodyさん2006/07/16(日) 05:54:51ID:???
>>494
レベル低い質問と、自分では考えないから全部お任せでお願い、は全然意味違うぞ
0498nobodyさん2006/07/16(日) 06:27:22ID:???
UTF8で保存したindex.phpから同じくUTF8で保存したhoge.logをfile( )で読み込んで、
print_rで出力すると何故か文字化けしてしまいます。

ブラウザのエンコードをUTF8に指定すると直るのですが、
いちいちそんなことしないでも普通に表示させたいのですが…。

<meta http-equiv="Content-Type" content="text/html; charset=utf8">

というメタをつけて文字コードを指定してるのですが上手くいきません。
どなたかよろしくお願いします。
0499nobodyさん2006/07/16(日) 06:34:03ID:???
>>498
META指定よりヘッダーで出力されてる文字コード指定の方が優先で
多分それがSJISかEUCにでもなってんでしょ。
php.iniで出力文字コードの指定があるから設定してみ。
header()使って自分で出力するのでもアリかもね。
0500nobodyさん2006/07/16(日) 06:56:25ID:???
utf-8 じゃね?
0501nobodyさん2006/07/16(日) 12:57:48ID:xiYRHM+h
FC5をインストールしたのですが
RPMのPHPはmbstringが組み込まれていないようです。
RPMは捨てて自分で入れ直すしかないですか?
0502nobodyさん2006/07/16(日) 13:09:36ID:???
>>501
srpm の spec ファイルを編集してリビルドすればo.k.

それか野良rpmを探すか。
自分ならソースから入れるね。
FreeBSDならports使うけど。
0503nobodyさん2006/07/16(日) 13:22:28ID:???
yumで入れればmbstringが入っている筈だが。
0504nobodyさん2006/07/16(日) 13:28:45ID:???
>>501
FC5にあるのか知らんが、php-mbstringパッケージ
05055012006/07/16(日) 13:38:45ID:???
>>502-504
レスありがとうございました。
アンインストールしようとしていたのですが
mbstringのパッケージをインストールしたら無事使えるようになりました。
0506nobodyさん2006/07/16(日) 14:59:52ID:5V0Lpe7K
本当にくだらない質問で申し訳ないのですが

最近はやりのスクロールにあわせて上下するフロートメニューを
PHPだけで作るコトってできますでしょうか?
縦に長いページの中でどこがブラウザに表示されてるのか取得して
画像を動かすことができれば作れそうですよね。

PHPでできるかな?

ttp://www.ws-company.jp/1f_info.php
↑ちなみにこんなやつです。ここのはJAVAで作ってるみたいですね
まあ、JAVA使ってもいいんだけど…
0507nobodyさん2006/07/16(日) 15:02:08ID:???
すごい下らない質問でも、今までがんばって駄目だったのが伝わってくるのなら答える。
0508nobodyさん2006/07/16(日) 15:02:19ID:???
>>506
PHPだけなら無理。Javascriptも絡ませるなら可能
0509nobodyさん2006/07/16(日) 15:04:56ID:???
PHPだけというか、PHPでやる必要がないよな。
0510nobodyさん2006/07/16(日) 15:12:40ID:???
>>499
>>500
だめでしたー、php.iniを触れる環境にないためheader( )で出力する設定にしたんですが
文字化けなおりません。

<?
header("Content-type: text/html; charset=UTF-8");

echo <<< EOF
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title></head>
<body>
EOF;

$rec = file("hoge.log");

print_r($rec);

echo "</body>\n</html>";
?>

がコードです。
ひとつ気になるのは出力されたものをブラウザで「ソースの表示」をしてみると
「ファイルに含まれていたnull文字はスペースに変換して開きます」
というアラートが出てくることです、ここに何か糸口が…?
0511nobodyさん2006/07/16(日) 15:26:00ID:???
>>506
Java じゃない。JavaScript ね。しかも Firefox では正常動作していなかった。
PHP なんぞなくても、ふつーの HTML + JavaScript で終了。
0512nobodyさん2006/07/16(日) 15:38:50ID:???
Javascript使わないと見れないページってうざいよ・・・
05135062006/07/16(日) 15:49:07ID:5V0Lpe7K
いま、上のサイトのソースいろいろいじっててふと思ったけど
PHPでできたとしても、いっぱいの人がアクセスしたら
サーバーに負担かかりすぎちゃって話にならなそう?

やっぱり、クライアントサイドでやらないとだめかな?

0514nobodyさん2006/07/16(日) 15:59:30ID:???
もしかして>>506はスクロールするたびリロードさせる気か
0515nobodyさん2006/07/16(日) 16:08:28ID:???
>>513
結局何も分かっていなさそう…
だから、なんで PHP が出てくるんだ?
PHP で JavaScript を含んだ HTML を生成したとして
サーバの負担が心配だからクライアントサイドで?
言っていることが支離滅裂なんですけど、分かってる?
0516498=5102006/07/16(日) 16:18:02ID:???
今ふと思ったんですけど、
もしかして読み込み元のhoge.logファイルをいくらUTF-8で保存しても、
phpがfile( )で読み込む時にコードの如何を問わずSJISとして読み込む設定になっている、
ってことはないでしょうか?

もしそうならphp.ini?とかの設定の問題なのでお手上げだなあと思ったんですが
0517nobodyさん2006/07/16(日) 16:22:16ID:???
>>516
ちなみに PHP のバージョンは何?
0518nobodyさん2006/07/16(日) 16:34:03ID:???
>>517
PHP Version 4.4.2でdefault_charsetはShift_JISになってますー

header()の出力よりもこっちが優先されちゃうのかな…
0519nobodyさん2006/07/16(日) 16:37:26ID:???
>>518
> header()の出力よりもこっちが優先されちゃうのかな…
それならまず、file と print_r を使わずに UTF-8 で直書きした HTML を含む
コードを PHP で出力させて、化けるか否かをチェック。
0520nobodyさん2006/07/16(日) 17:14:37ID:???
>>519
さきほどのコードに追加しました

<?
header("Content-type: text/html; charset=UTF-8");

echo <<< EOF
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
※略
<body>
化けるかどうかテスト              //←ここを追加
EOF;

$rec = file("hoge.log");
print_r($rec);
echo "</body>\n</html>";
?>

結果、「化けるかどうかテスト」は正常に日本語で、file()で読み込んだ部分は
文字化けで表示されました。

ただブラウザのエンコードをUTF8に変更すると、今度は逆に「化けるかどうかテスト」が文字化け、
file()で読み込んだ部分が正常に…、わけがわからなくなってきました
0521nobodyさん2006/07/16(日) 17:16:42ID:???
あ、追記です
ブラウザはSleipnir1.66とIEの6を使ってます

一応書いとくとXP SP2です
0522nobodyさん2006/07/16(日) 17:26:46ID:???
>>520
手元(PHP 4.4.2)で試してみた。が、化けなかった。
ブラウザは Firefox 1.5.0.4 と IE 6 SP2
mbstring 関係の設定は何も変更してないはず。ソースから make で。
読み込み UTF-8 のファイルは BOM 有り・無しの何れも。
0523nobodyさん2006/07/16(日) 17:33:15ID:???
BOMはなしで保存してます。

うーん、読み込むhoge.logの方をSJISで保存すると一応全体がSJISとして化けなしに表示されるので、
とりあえずはこれでしょうがないかと…。
0524nobodyさん2006/07/16(日) 18:33:30ID:???
>>506
>最近はやりのスクロールにあわせて上下するフロートメニュー

すっごく根本的なことを教えてあげよう。
そんなのは最近じゃなくて大昔からあるものだし、別に流行ってないし、
PHP関係ないし、っていうかウザいだけだから止めたほうがいいし。

初心者がサイト作るとすぐそういうウザい動きを付けたがるのは何故だろうね?
0525nobodyさん2006/07/16(日) 18:44:07ID:???
>>523
ちなみに >>522 の mbstring 設定値は
mbstring.detect_orderauto
mbstring.encoding_translationOff
mbstring.func_overload0
mbstring.http_inputauto
mbstring.http_outputSJIS
mbstring.internal_encodingEUC-JP
mbstring.languageneutral
mbstring.substitute_characterno value
でした。
0526nobodyさん2006/07/16(日) 18:45:21ID:???
>>525
うは、ごめん。タブは消えるのか。見辛くて申し訳ない。
0527nobodyさん2006/07/16(日) 19:22:30ID:???
>>525
ありがとうございます、今みてみたら化けていたサーバーは

mbstring.http_output SJIS SJIS
mbstring.internal_encoding SJIS SJIS

となってました。
525の人と同じ環境の他のサーバーで試してみたところ文字化けなしにいけました。
問題点がわかったので他のサーバーで動かすようにします、
ありがとうございました。
0528nobodyさん2006/07/16(日) 22:03:44ID:???
2つの文字列の先頭から何文字目までが同じか調べたいのですが、
どうもてっとり早い方法が見つからない。
C でいえば
for(i = 0; c1[i] == c2[i]; i++ );
ぐらいのものなわけですが、php だとどうしたものでしょう?
similar_text だと、先頭からという限定ができないようだし、
ord($str) でCライクに比較しようにも、
先頭のアスキーしか取れないようなので、一々 substr で先頭を切っていくことになる?
substr_compare で徐々に len を減らしていく、という方法だと
ほぼ同じ部分文字列を毎回一から比較していくわけで無駄が多い。
こういうときはどうするのがうまい方法なのでしょう?
0529nobodyさん2006/07/16(日) 22:26:57ID:???
いけんじゃないの?そのCと同じで

str1 = 'hogehoge';
str2 = 'hagehage';
for(i=0; str1[i]==str2[i], (i<strlen(str1) && i<strlen(str2)); i++);

これダメなんだっけ?
0530nobodyさん2006/07/16(日) 22:34:51ID:???
>>528
http://jp.php.net/manual/ja/language.types.string.php#language.types.string.substr
0531nobodyさん2006/07/16(日) 22:52:04ID:???
>>528
上手い方法を知っているわけではありませんがmb_substrで順番に見て行くほか無いような・・・

<?php
$str1 = "ABCD日本語wktk";
$str2 = "ABCD日本語kwsk";
$ln = min(mb_strlen($str1), mb_strlen($str2));
for ($i=0; $i<$ln; $i++) {
 if (mb_substr($str1, $i, 1) != mb_substr($str2, $i, 1)) {
  echo $i . mb_convert_encoding("文字目までは一緒", "SJIS");
  break;
 }
}
?>
0532nobodyさん2006/07/16(日) 23:03:32ID:???
>>531
何でそんなにマルチバイト文字列関数使いたがるの?
0533nobodyさん2006/07/16(日) 23:25:43ID:VEXOfJen
 を置換で削除しようと思って

$res=strtr($res," ","");

というふうにしたのですが、
全く置換できません。。
何が問題なんでしょ?
0534nobodyさん2006/07/16(日) 23:28:12ID:???
>>533
str_replace関数
0535nobodyさん2006/07/16(日) 23:30:10ID:???
サーバにインストールされているPEARの一覧表示の出し方ってどのようにするのでしょうか?
対象となるサーバはXREAです。
05365312006/07/16(日) 23:34:53ID:???
>>532
たぶん日本語を比較したいのだろうと思ったので。
ordで比較とか書いてたので。
0537nobodyさん2006/07/16(日) 23:45:01ID:???
>>535
pear list
05385332006/07/17(月) 00:58:07ID:???
>>534
thx!
あなた頭いいね。

■ このスレッドは過去ログ倉庫に格納されています