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

【php】part29【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/07/06(水) 09:57:54ID:0DucnAyH
・PHP全般の質問スレです。
・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
 http://www.php.net/
■日本 PHP ユーザ会
 http://www.php.gr.jp/
■PHP マニュアル
 http://www.php.net/manual/ja/
■PEAR マニュアル
 http://pear.php.net/manual/ja/
過去スレ, 関連スレ等>>2-10辺り

前スレでは、尾張の方でお世話になりました。
原因は唯のファイル名間違いでした。ダッセー俺OTZ

05445402005/09/27(火) 22:59:47ID:oCiYbKLV
あ!皆さん有難うございます。
まだ始めて三日なもんで。。
ifとforとswitchしか使えない身です。。。。
本当に有難うございます
0545nobodyさん2005/09/27(火) 23:07:35ID:???
>>543
そんなもんただの誤差。大抵はシングルクォートの方が早い。
ただ>>542から言えることは、シングルクォートとダブルクォートを躍起になって使い分けてる香具師は無意味ってことだな。
0546 2005/09/27(火) 23:34:31ID:???
printf("これは%d円です",$home);

なんて使わない?
0547nobodyさん2005/09/28(水) 03:02:31ID:???
optimizer突っ込むとその辺最適化してくれるんじゃないかな
うちだとこんな感じだし、それぞれ幅が上下0.05sec程度あるから、誤差だな
//$data = "これは".$home."円です"; // 1.72963690758
//$data = 'これは'.$home.'円です'; // 1.76355910301
//$data = "これは${home}円です"; // 2.18645095825
//$data = "これは$home 円です"; // 2.1633310318

>>546
関数呼び出しはちょいと遅かった
0548nobodyさん2005/09/28(水) 07:16:13ID:???
チラシ、チラシ、っと。

気になって色々測定してみたら、総じてシングルクォートよりダブルクォートの方が早いことがわかった。
まずシングルクォートには謎のオーバーヘッドがあるらしく、
for ($i = 0; $i < 1000000; $i ++) '';
for ($i = 0; $i < 1000000; $i ++) "";
を比べると、だいたい2.46秒vs2.44秒でダブルクォートのほうが0.02秒ほど早い。
(ってことは一個につき20ナノ秒しか変わらんわけだが・・・)

それから
'aaaaaa ... aaaaaa'
"aaaaaa ... aaaaaa"
って感じでaを1000000個並べてみたけど、8.03秒vs8.02秒でやっぱりダブルクォートの方が早い。

自分は今まで、変数の展開も改行もタブも含まない場合には意識的にシングルクォートを使うようにしていたが、実はそれは無意味であることがわかった。
たぶんシングルクォートによる文字列リテラルの表記の利点は、「$」および「"」をエスケープせずに使える、という点以外には全くないのではないだろうか。
$_SERVER['REMOTE_ADDR']とかさ、$_SERVER["REMOTE_ADDR"]でいいじゃん。
echo 'Hello, World'まで書いてみたら、「あ、やっぱ改行入れようかな」、なんてダブルクォートに直すのとか馬鹿みたいじゃないか。

とにかく測定には誤差がかなりあるので「ダブルクォートのほうが早い」という言い方は不適切かもしれない。
それでも、変にシングルクォートとダブルクォートを使い分ける悪習慣は治して、なるべくダブルクォートに統一するほうが効率や読みやすさも向上するだろうなぁと思った。

おしまい。
0549nobodyさん2005/09/28(水) 07:54:01ID:???
>>548
とりあえずversionと測定に使ったCPUは書いといた方が良いぞ
0550nobodyさん2005/09/28(水) 07:55:07ID:???
自分でコンパイルしたんだったらコンパイラも。
0551nobodyさん2005/09/28(水) 10:05:16ID:???
>>549
(゜д゜)<あらやだ
>>548はPHP5.0.4/WinXP/Athlonでやったんだけど、
レンサバのPHP4.3.11/Linux/i686でやってみたらシングルクォートのがちと早いみたい。
まー100万みたいなバカデカイ数でやって0.01秒差とかだし、ダブル・シングルのどっちを使うかでパフォーマンスに影響を与えることはなさそう。
環境依存な面もあるのかもしれないけど、大差ないでしょう。たぶん。
0552nobodyさん2005/09/28(水) 10:33:09ID:???
>>551
それってパースにかかる時間の差では?
100万回も200万回も同じ差しか出ないならまず間違いない。
0553nobodyさん2005/09/28(水) 11:12:54ID:???
>>552
パースにかかる時間を測定していることになってるのは間違いないね。
むしろ実は個人的に気になっていたのはその部分で、ダブルクォートだと変数の展開とかあるので余計な処理が挟まってるんじゃないかと危惧してたのであります。
つーか何度か色々な計測してみたけど、たぶんこう結論付けるのが一番手っ取り早い。

ダブルクォートもシングルクォートも変わんねぇ!!

>>548で「微妙に差が出る」って書いちゃったから、そこが引っかかってた人ももしかしたらいたのかな・・・orz
どちらかというと「ダブルクォートはシングルクォートより遅いのかどうか」ってのが自分の気になっていたことなので、紛らわしい表現スマソ。
一応>>548を書いた時点では、それぞれ100回ずつ全く同じ処理を繰り返して平均出してたんだけど、そのときにダブルクォートの方が早いかのように思ったから調子に乗ってチラシの裏のつもりで書いたわけ。
もう一度言っておくけど、結論は「どっちも変わんねぇ」ってことでよろしく。

度々長文で失礼。
0554nobodyさん2005/09/28(水) 11:22:46ID:Vv+BhbqS
もっとロースペックのマシンで計測した結果キボン
0555nobodyさん2005/09/28(水) 13:06:02ID:???
Apache2 + PHP5.0.4 + WinXP Pro + Pen4 1.7GHz + 512MB
>>542 3000000回 3回〜5回平均
5.4427189827、5.31593894958、9.08038902283、9.09205913544
>>546 sprintfで$dataに代入 他同
9.70766806602
>>548 同
1.96628095627〜1.93123102188 、1.95970702171〜1.91702103615
0556nobodyさん2005/09/28(水) 13:18:11ID:???
ちなみに、>>542をヒアドキュメントで
Fatal error: Maximum execution time of 15 seconds exceeded (w
1500000回(半分)の結果 8.34855318069
0557nobodyさん2005/09/28(水) 13:35:06ID:???
つまり

$data = "これは".$home."円です";
$data = 'これは'.$home.'円です';

の方が

$data = "これは${home}円です";
$data = "これは$home 円です";

より早いってことでFA?
0558nobodyさん2005/09/28(水) 13:38:46ID:???
でも実際の速度差はどれも誤差みたいなもんだね。
0559nobodyさん2005/09/28(水) 13:49:54ID:???
まあ、クオートに気を使うより設計とかアルゴリズムを見直すほうが建設的だな。
0560nobodyさん2005/09/28(水) 14:05:38ID:???
Apache2.0.54 WinXP Pro Pen4 2.4GHz 1GB
>>542 3000000回 3回〜5回平均
PHP5.0.5
3.1555199146271 3.1570108413696 6.9906218846639 8.0708059469859
PHP5.1.0b2
1.623534154892 1.6456735610962 5.2970746358236 5.7716292540232
0561nobodyさん2005/09/28(水) 14:06:12ID:???
>>557
結果から見るとそうなるね。
" "の中に $ が現れると変数展開の準備(実際には変数じゃなかったとしても)とかで
結構道草を喰うんじゃないかな。

$data = "これは".$home."円です";   // 3.41249799728 . を使って結合
$data = "こ$ れは".$home."円です"; // 8.35340023041 ""内の$は文字
$data = "こ$ れは$home 円です";   // 9.865629673   ""内の$は文字。. を使って結合

誰かがpeclのparsekitあたりで中間コード(opcode)を出してくれたらさくっと結論がでそうな気が。
05625612005/09/28(水) 14:08:20ID:???
を。↑ 2,3行目のコメント部分は逆。
0563nobodyさん2005/09/28(水) 14:11:52ID:???
echo の場合は
echo "これは".$home."円です"; // 結合
より
echo "これは",$home,"円です"; // 順番に出力
のが速かったりするんだな。
0564nobodyさん2005/09/28(水) 15:40:06ID:???
APCでパース済みの実行すれば速度差はなくなるはずだね。

>>559
> まあ、クオートに気を使うより設計とかアルゴリズムを見直すほうが建設的だな。

異議なし。
0565nobodyさん2005/09/28(水) 18:25:29ID:???
?>
あほ
<?php
0566nobodyさん2005/09/28(水) 18:30:24ID:???
Perlだと連結演算子を使うと遅いんだよな…
0567nobody2005/09/28(水) 20:50:43ID:bZ/NcdOD
キャッシュについて

■環境
- Apache2.0.54 + PHP5.0.5 + eAccelerator0.9.3
- 確認ブラウザはFirefoxとIE6

■phpinfo() :キャッシュに関係しそうなところ
- session.cache_limiter : no-cache
- session.cache_expire : 0
- _SERVER["HTTP_CACHE_CONTROL"] : max-age=0

■問題のページ
- session関数を使ってログイン管理(cookie)
- page.php?mode=*** で動作変更(トップページ表示・フォーム表示・投稿画像確認ページ表示・変更処理など)
- やることはtest.jpg の管理
- トップページ(page.php?mode=top)で test.jpgを表示

■やってみたこと
- session_startの前にsession_cache_limiter('nocache');
- 出力ページの<head></head>内にmetaでキャッシュ無効の指定
- firefoxのliveheader で ヘッダーの確認(Cache-Control・Pragmaともにno-cacheだった)

フォームから新しい画像をアップロードして test.jpg を書き換えて完了画面表示後、リンクをクリックしてトップページに戻ると変更前の画像(キャッシュ)が表示されます。
ブラウザをリロードすることで変更後の画像が表示されます。
別サーバ(ほぼ同じ環境)でsession関数なしにやった場合はキャッシュが表示されることはなかったです。他のサイトでもそういったことは起きません。
session関数を使った上でこのキャッシュを無効にするにはどうすればいいのでしょうか?
0568nobodyさん2005/09/29(木) 00:43:55ID:???
自己解決
phpで生成されるページの問題というよりは読み込んだtest.jpgのヘッダーの問題でした。
その方向で調べて見たら、解決しました。
失礼しました。
0569nobodyさん2005/09/29(木) 07:12:06ID:???
二次元配列で行を維持したまま列をソートすることはできますか?
0570nobodyさん2005/09/29(木) 07:34:48ID:???
>>569
列の値によって行を並べ替えるのをソートというのではないでしょうか
行を維持ってどういう意味
0571nobodyさん2005/09/29(木) 09:45:57ID:???
>>569
いまいち意味わからんので、次の中から好きなの使え

sort (普通に値の比較でソート)
ksort (キーの比較でソート)
asort (連想配列の「キー=>値」関係を維持して、値の比較でソート)
rsort krsort arsort (逆順バージョン)
usort uksort uasort (比較に自作コールバック関数を使用できるバージョン)

どれを使えばいいか自分で判別できない場合は、適当に配列のサンプルを出して質問してくれ。
0572nobodyさん2005/09/29(木) 11:08:17ID:???
>>569
こういうことかな
<?php
$a[0] = array(3,7,1,4);
$a[1] = array(10,5,45,3,4);
$a[2] = array(6,8,2,1,4);
var_dump($a);

foreach($a as $key=>$val) {
$a[$key] = sort($val);
}
var_dump($a);
?>
0573nobodyさん2005/09/29(木) 14:44:46ID:???
行要素の関係を維持したまま
列の特定の要素でソートするって事?
(そんな簡単じゃないか・・・普通二次元配列使わないしな)

code value --> code value
01  200    03  100
02  300    01  200
03  100    04  250
04  250    02  300





0574nobodyさん2005/09/29(木) 22:41:07ID:???
>>569
つarray_multisort
動作が複雑だが複雑なソートを一発で済ませられる優れもの

>>573
n次元配列、よく使ってるんですが・・・。データ形式が悪い?
n次元配列とか配列の入れ子化なんてphpらしいと思うんだけどな
0575nobodyさん2005/09/29(木) 23:28:13ID:???
ファイルをincludeする際、変数を渡すことは可能でしょうか?
GETメソッドで渡せないかと思い、

include("config.php?id=$num");

としてみましたが、渡っていないようでした。
何か方法がありましたら、ご教授ください。。
0576nobodyさん2005/09/29(木) 23:33:17ID:???
>>n次元配列
Cで考えてました、phpって配列の要素の型は統一されてなくて
良かったんですね。それなら構造体とかクラス使うかなと思って。
0577nobodyさん2005/09/29(木) 23:38:54ID:???
>>575
マニュアルのincludeのページを見てごらん。
0578nobodyさん2005/09/29(木) 23:41:04ID:???
あ・・・間にレスが、ついでに。

>>575
http://php.s3.to/man/function.include.html#AEN4828
PHP 4.3.0より前のバージョンの Windows版PHPは、現在この関数に関してリモートファイルアクセス機能をサポートしていません。
これは、allow_url_fopenを有効にした場合でも同様です。

//include("config.php?id=$num");
ではローカルのinc_path/config.php?id=$num
というファイルを探しに行くので�_とのことです。
0579nobodyさん2005/09/30(金) 07:40:13ID:???
>>575
変数はそのまま使えるだろ
0580sage2005/09/30(金) 10:11:34ID:RUxAZUA/
アシアル社のフリーウェアのjpgraphを使い始めたのですが、
サンプルソースそのままコピペで試してるのですが、
Fatal error: Class 'Plot' not found in /home/mizuno/WWW/jpgraph-1.19/src/jpgraph_scatter.php on line 64

Fatal error: Class 'Graph' not found in /home/mizuno/WWW/PHP/test/sanpu.php on line 8

と出てしまいうまく起動できません。
文からクラスが無いのは分かるんですけど、改善策などありましたら教えてください。
0581nobodyさん2005/09/30(金) 11:46:14ID:???
>>580
require "jpgraph.php"
0582nobodyさん2005/09/30(金) 13:50:17ID:???
>>575
何回聞いても同じ。答えは過去に出てるから君の理解力が足りないだけ。
0583nobodyさん2005/09/30(金) 14:15:09ID:???
imagemagickって、PHPでも使えますか?
05845832005/09/30(金) 15:09:55ID:???
PHPでの
ttp://www.ss.iij4u.or.jp/~somali/web/im_example/write.html
な感じのサンプルが欲しいのですが…

1個でいいので、誰か書いていただけないでしょうか。
0585nobodyさん2005/09/30(金) 15:16:35ID:???
>>583
外部プログラムとして実行することしかできない。
GDみたいなのと連携するならファイルを通すしかないね。
05865832005/09/30(金) 15:26:02ID:???
>>585
レス、ありが�d。
でも、ごめんなさい。
もちょっと詳しく説明してもらっていいですか?
0587nobodyさん2005/09/30(金) 15:41:30ID:???
>>586
あーImageMagickの結果をそのまま出力するだけならファイル通す必要ないか

header("Content-type: image/jpeg");
system("convert なんやらかんやら jpeg:-");

あとは
http://www.imagemagick.org/script/command-line-processing.php
http://www.imagemagick.org/script/command-line-tools.php
あたりを参照してくれ
05885862005/09/30(金) 16:17:18ID:???
>>587
実行させたらエラーは出ないものの、画像も出ない。
エラーログ見ると『/usr/bin/convert: そのようなファイルやディレクトリはありません』て。

PHPでは、convertサポートしてないってどっかで読んだ事あるんだけど、
それでつか??
0589nobodyさん2005/09/30(金) 19:07:13ID:???
>>588
ImageMagickをインストールすると使える筈のconvertコマンドが
/usr/bin/convertに存在しなかったってことだべ。

・ImageMagickがインストールされているのか?
・インストールされている場合は どこにconvertがあるのか?
から確認するよろし。
サポート云々に関しては、system()から呼び出した時にはPHPの実行ユーザが誰かくらいしか影響しない。
0590nobodyさん2005/10/01(土) 04:08:23ID:???
>>583
一応PECLでImageMagick拡張がある。
>>585
嘘をつくなと。

ただ使いにくいというか開発が止まってる。
結局のところImageMagickをつかうならコマンドから。
っていうのが正しい。
05915692005/10/01(土) 10:26:58ID:???
質問者でありながら2日ほどレスをしないですみませんでした。
皆様返信ありがとうございます。
ありがたいレス一つ一つよく確認して後ほど返信しますね。
05925692005/10/01(土) 10:42:13ID:???
説明不足ですみませんでした。
やりたかったことは>>573さんのレスにあるようなことです。
>>574さんのarray_multisortで上手くいきそうな気がしますた。
どうもありがとうございます。
0593nobodyさん2005/10/02(日) 01:04:38ID:???
Apche上でPHPを動かす方法として3つの方法がありますが、SAPI、CGI、DSOのそれぞれの違いがわかりません。違いを教えていただけないでしょうか?
05945932005/10/02(日) 02:05:52ID:???
質問後に自分で調べてましたが…

DSOってのはWindowsのDLLのことなんですよね。文脈によって
モジュール版PHPをSAPI版と言ってみたり、DSO版と言ってみたり
するだけという理解でよろしいでしょうか?
0595nobodyさん2005/10/02(日) 02:31:59ID:???
>>594
>文脈によってモジュール版PHPをSAPI版と言ってみたり、DSO版と言ってみたりするだけ
違う。DSOとして組み込まなければDSO版とは言わない。
そもそも公式のドキョメントでDSO"版"という言い方してるのかな。
とすると説明としては不適切だと思うよ。(それこそ文脈みないと判らんけど)

因みにPHPの種類において広義のSAPIではCGI版もCLI版もSAPI(版)に含まれる。
狭義ではSAPI=Apache SAPIだけどね。
05965942005/10/02(日) 02:37:17ID:???
>>595
ありがとうございます。

>>因みにPHPの種類において広義のSAPIではCGI版もCLI版もSAPI(版)に含まれる。

こうなると、SAPI版でないPHPってのは何なんでしょうか?
0597nobodyさん2005/10/02(日) 02:49:03ID:???
なんでDQメントなんだか…
さらっと見たけど公式の文面でDSO versionの記述はなかった
(ユーザコメントにはあったけど)
ちゃんと適切に使ってる。
0598nobodyさん2005/10/03(月) 06:44:05ID:???
javascriptが使えるか使えないかを判別して、それぞれ違う内容を送るようにすることは出来ませんか?
0599nobodyさん2005/10/03(月) 07:04:09ID:???
>>598
<script>
<noscript>
06005832005/10/03(月) 13:45:57ID:???
返事遅くなってすませんm(__)m

>>589
Imagemagickはインストールされてるかと思います。
Perlで、>>584のURLに載ってたサンプル、動かしてみたので…。

convertは、/usr/bin/にはいませんでした。
これは、Imagemagickをインストールする時に一緒に入れられるコマンド??
(あ、もうPHPの質問じゃなくなってる?)

>>590
PECL、見てきました。
これを入れないと、PHPでは使えないんですね?
色々読むと、PHPならGDの方が良さげですけど、どうなんでしょうか?
0601nobodyさん2005/10/03(月) 14:27:11ID:???
>>600
>これを入れないと、PHPでは使えないんですね?
>>585→>>590の流れぐらい読みましょう。

ImagemagickとGDはそれぞれ似てるようで違うので、
どっちが良いというのは使う用途で決まる。
06026002005/10/03(月) 17:32:15ID:???
>>601
ん?
>>590で、Imagemagickの拡張がある事と書いてあったので、
これを入れれば使えるのかと。
また、「嘘をつくなと」とあったので、>>585は嘘なのかなと。

とりあえず、画像処理はPerlで行う事にします。
ありがとうござやした。
0603nobodyさん2005/10/03(月) 21:29:20ID:???
>>602
嘘なのは「しかできない」の部分。
しかし590の人も言っているが、結局のところ実用上は585の方法になる。
そして「これ(PECLでImageMagick拡張)を入れないと、PHPでは使えない?」
の答えは、「いいや、585の方法が普通」となる。

自分がサーバの管理者なら、ImageMagickのconvertがPHPから
使えるようにパスとか権限を設定すれば良いだけの事。
実際ImageMagickはインストール済みなんでしょ。
#PMのImageMagickが使える(使い慣れてる)なら、Perlで組んでもいい話だけど。
0604nobodyさん2005/10/06(木) 08:39:37ID:???
屁理屈を飛ばしあうスレはここですか?
0605nobodyさん2005/10/06(木) 09:52:06ID:???
ぷっ
0606nobodyさん2005/10/06(木) 12:11:22ID:???
_, ,_
('A`)
ノヽノヽ =3 パスゥ
  くく
0607nobodyさん2005/10/12(水) 05:46:09ID:E+hF9erY
<!--column-->を別の文字に代替する方法を教えてください
index.phpと同ディレクトリにあるtemplate.htmlを出力することには上手くいったのですが
変換されずにそのまま出てきてしまいました。適切な命令形式?はないでしょうか


◆index.phpの中身↓
<?php
$file = readfile ('./template.html');
$file = include('$file');
$column = '<!--column-->';
$log = '変換完了';
$file = ereg_replace('<!--column-->',$log, $file);
echo("$file");
?>

◆template.htmlの中身↓
<html lang="ja">
<head>
<title></title>
</head>
<body>
aaaaaaaaaaaaaaaaaaaa<br>
<!--column-->
</body>
</html>
0608nobodyさん2005/10/12(水) 06:34:27ID:???
index.php が間違っている。

後で、readfile と include の用例を調べて理解するように

$filename = './template.html';
$fp = fopen($filename, 'r');
$file = fread($fp, filesize($filename)
fclose($fp);

echo ereg_replace('<!--column-->', '変換完了', $file);
0609nobodyさん2005/10/12(水) 07:37:40ID:???
>>607
$file = readfile ('./template.html');
この時点でtemplate.htmlの内容が出力され$fileには読み込んだバイト数が入る

$file = include('$file');
シングルクォーテーションで囲んだ変数は展開されないので$fileというファイルを探してエラーになるはず
もっとも展開されても$fileの中身はバイト数なのでいっしょだけどね
それにincludeは関数じゃないので使い方からおかしい

マニュアル読んで関数の戻り値を確認するように
0610nobody2005/10/12(水) 12:54:59ID:???
サニタイジングするのは
htmlspecialchars($変数)
だけでOKですか?
まだ不十分なのでしょうか?
宜しくお願いします。
0611nobodyさん2005/10/12(水) 13:08:16ID:???
>>610
XSS対策としてどうすればいいのかという話なら、どこに表示するのかによるよ。
HTMLの属性値やCSSに使うので無ければよいかと。
サニタイジング(入力内容の浄化)という意味では、
スクリプトがどういう入力を期待しているか、つーのをまず明確にしないとダメ。
つーか、それも無しに答えられるわけがない。
0612nobodyさん2005/10/12(水) 13:21:39ID:???
くだらねえ
0613nobodyさん2005/10/12(水) 13:40:46ID:???
全然下らなくないよ
0614nobody2005/10/12(水) 14:04:01ID:???
>>611さん
レスありがとうございます。
XSS対策のことです。
フォーム(HTMLファイル)から値を受け取りPHPファイル
でデータベース接続を考えてました。
もう少し調べてみます。
ありがとうございました。
06156072005/10/12(水) 15:10:20ID:E+hF9erY
>>608
>>609
ありがとうございます。
index.phpを以下のように修正し<!--column-->を変換することが出来ました

<?php
$filename = './template.html';
$fp = fopen($filename, 'r');
$file = fread($fp, filesize($filename));
fclose($fp);

echo ereg_replace('<!--column-->', '変換完了', $file);
?>



正直泣きそうな勢いだったのでとても助かりました。
指摘された点についてはPHPマニュアルで確認しておきます。
本当にありがとうございます。

0616nobodyさん2005/10/12(水) 16:23:38ID:???
>>613
主観に主観をぶつける水掛け論くだらねえ
0617nobodyさん2005/10/12(水) 18:18:06ID:???
でも今日は暑いから水掛けたほうがいいな
0618nobodyさん2005/10/12(水) 18:34:09ID:???
鼻水凍っとるわボケ。
0619nobodyさん2005/10/12(水) 19:36:55ID:???
>>610
セキュア・プログラミング講座
ttp://www.ipa.go.jp/security/awareness/vendor/programming/
0620nobodyさん2005/10/12(水) 20:51:55ID:???
>>618
ワロタ
0621nobodyさん2005/10/12(水) 21:18:06ID:???
技あり
0622nobodyさん2005/10/12(水) 23:18:52ID:???
最終的にどこまで要求しているのか知らんけど、
あの程度の置換でereg_replaceを使うのもどうかと・・・
0623nobodyさん2005/10/13(木) 00:12:27ID:???
正規表現使うならpreg使った方が早いし
そもそも正規表現ないならstr_replace使うのがいいわね。
0624nobodyさん2005/10/13(木) 01:23:14ID:???
ある箇所はereg,ある箇所はpreg,またある箇所はstr系
ってなってなければどれでもいいね
0625nobodyさん2005/10/13(木) 01:29:21ID:???
>>624
eregとpregが混在するのはよろしくないが、それぞれとstr系が混在するのはあり。
正規表現が必要ないならstr系使った方がよい。
0626nobodyさん2005/10/13(木) 02:36:48ID:???
>>625
>正規表現が必要ないならstr系使った方がよい。 
もちろんもちろん.マニュアルにも書いてあるね.
>>624 は単純な置き換えのために
ereg_replace と str_replace が混在してなければ,っていう意味.
0627nobodyさん2005/10/13(木) 02:48:26ID:???
str_replace はバイナリセーフじゃないからSJISやEUCのテキスト扱うときはちょっと注意がいる。
それが問題になることはほとんどないんだけど。
0628nobodyさん2005/10/13(木) 03:09:07ID:???
>>627
バイナリセーフってヌルバイト含むときの問題だろ?
文字コード無関係なんだが。
0629nobodyさん2005/10/13(木) 08:20:22ID:???
str_replaceはバイナリセーフだし。。
0630nobodyさん2005/10/13(木) 10:35:44ID:???
⊂(^ω^)⊃セフセフ!!!
0631nobodyさん2005/10/13(木) 11:12:14ID:???
  _, ._
( ゚ Д゚)
0632nobodyさん2005/10/13(木) 12:06:02ID:???
>>627
マルチバイト対応じゃないといいたかったのかな
そのときはmb_ereg_replace使えばいい
0633nobodyさん2005/10/13(木) 16:44:51ID:???
何回ベンチしてもpregよりeregのほうが速いんだけど
0634nobodyさん2005/10/13(木) 17:12:35ID:???
POSIXでサポートされてない機能もある。
最初から preg で。
0635nobodyさん2005/10/13(木) 20:35:35ID:???
>>633
どういうベンチ。
0636nobodyさん2005/10/13(木) 21:06:02ID:???
ペンキ塗り立てのに決まってる
0637nobodyさん2005/10/13(木) 21:43:17ID:???
すわっちまったじゃねーか馬鹿
0638nobodyさん2005/10/13(木) 21:47:26ID:???
はいはいワロスワロス
0639nobodyさん2005/10/13(木) 22:29:49ID:???
マニュアルにpregの方を使うべきと書いてあるな。
0640nobodyさん2005/10/14(金) 07:34:14ID:???
PHP4.4.0は確かにpregの方が早い
PHP5.1は両方とも遅い。特にpreg遅すぎじゃない
0641nobodyさん2005/10/14(金) 10:44:55ID:???
PCREの実装によっても違うからな
0642nobodyさん2005/10/14(金) 12:12:08ID:???
PHP5 m9(^Д^)
0643nobodyさん2005/10/14(金) 16:05:57ID:???
標準のxml_parserを使って色々実験しているんですが
<hoge>りんご&amp;ばなな</hoge>
みたいに途中に「&amp;」が入っていると、xml_set_character_data_handlerで文字を取得した時に
&のところで切られてしまいます。(&以降の文字しか取得できない)
&amp;にしても、&amp;amp;にしてみてもだめでした。XML自体はエラーは出ていません。
これって仕様ですか?
&amp;が入る時を想定して、ハンドラで何か細工しないといけないのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています