2012-01-04 10 views
0

に等しくない間、私は1.002.000又は0.000ような値を持つ文字列$numberを有し、$number0.000に等しくないがコードを実行しなければなりません。PHP正規表現

私のようなPerlの構文を持っています

while(! ($number=~ /^0.00(.*)/)){ 

どのように私はPHPでこれを達成していますか?

+2

(float)$ number == 0)を比較してみませんか?実際には、$ number == 0や$!だけでも動作します。 –

+0

正規表現では、0.00999がループ終了記号として扱われます。しかし、-0.00555はそうではありません。これは意図的ですか? – Johnsyweb

答えて

4

使用preg_match

while (ceil($number)) { 
    // Do stuff 
} 

は、最寄りのint型に切り上げとブール必要がありますので、同じジョブとして評価し、また、かなりのようになります。と間違って何かが

while (! preg_match('/^0\.00(.*)/', $number)) { 
2

ありますすべての反復のためにRegexエンジンを起動するよりも効率的です...

+0

これはregexを使うより効率的だと私は同意しますが、あなたの条件は '0.001'のような数字に対しては間違っています。正確な値が何であり、許されていないか、彼が持っていた値と持っていない値が何であるかについての疑問が少しはっきりしています。少なくとも、彼はPHP正規表現の使い方を学ぶ機会を得ました。 –

+0

@tandu:それは仕事のために全く間違ったツールであるときにツールを使う方法を無意識に学ぶことです。 OPが正規表現を使用して数値比較を続けている場合、そのコードベースはメンテナンスの悪夢となります(ほとんどの場合、http://thedailywtf.com/で終了します)。 – Johnsyweb

0

これは正規表現の仕事ではありません!