2012-01-04 4 views
0

동일하지는 않지만은 I 1.00, 2.0000.000 또는 같은 값 문자열 $number$number 있고 0.000가 동일하지 않은 상태 코드를 실행할 수있다.PHP 정규식

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

어떻게 PHP에서이를 않습니다

내가 좋아하는 펄 구문 한

?

+2

(float) $ number == 0을 (를) 비교하지 않으시겠습니까? 사실, $ number == 0 또는 $! number 일 수도 있습니다. –

+0

정규식은 0.00999를 루프 종결 자로 취급합니다. 그러나 -0.00555는 그렇지 않습니다. 이것은 의도적입니까? – Johnsyweb

답변

4

사용 preg_match :

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

가장 가까운 INT까지 반올림과 부울해야하므로 같은 작업으로 평가하고, 또한 상당히 더해야한다 : 뭔가 잘못

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

있는가 모든 반복에 대해 Regex 엔진을 실행하는 것보다 효율적입니다 ...

+0

나는 이것이 정규 표현식을 사용하는 것보다 더 효율적이라는 데 동의하지만, '0.001'과 같은 숫자에 대해서는 조건이 잘못 될 것이다. 질문은 정확한 값이 무엇이고 허용되지 않는지, 그가 가지고 있고 갖지 않은 값에 대해 약간은 분명하지 않다. 적어도 그는 PHP 정규 표현식을 사용하는 법을 배울 수있는 기회를 얻었습니다. –

+0

@tandu : 툴을 완전히 잘못된 툴로 사용하는 방법을 배우는 것은 무의미합니다. OP가 정규 표현식을 사용하여 숫자 비교를 계속 수행한다면 코드베이스는 유지 보수의 악몽이 될 것입니다 (대부분 http://thedailywtf.com/에서 끝납니다). – Johnsyweb

0

이것은 정규 표현식에 대한 작업이 아닙니다!

while ((float)$number) { 
    // execute code 
}