루프

2011-04-14 7 views
-2

내가이루프

if($string) 
{ 
    ///something 
} 

하지만 같은 경우 루프 내에서이 평가하려는이

$string = "0>0.1"; 

같은 변수가있을 경우 내부 에코 내가이 일을하고 경우 오류가 메신저. 이동 방법

+2

어떤 오류가 있습니까? 나는이 코드 스 니펫이 무엇을해야 하는지를 모른다. (비어 있지 않은 문자열은 항상 여기에서 'true'로 평가된다.) – KingCrunch

+3

'if()'는 루프를 만들지 않습니다. – Spudley

+0

안녕 얘들 아, @ Digak은 진짜 질문을하고있다, 그는 eval을 사용하고 싶다. –

답변

1

평가 또는 문자열의 작동 방식을 이해하지 못합니다. 문자열에 무엇이든 넣으면 평가되지 않지만 그 순간의 값만 포함하면됩니다.

$string = "0>0.1"; // contains "0>0.1" 

$bool = 0>0.1; // contains TRUE 

IF 문에는 문자열이 아닌 부울이 필요합니다.

1

eval을 사용하여 문자열의 내용을 평가할 수 있습니다. eval은 악의이며 모든 PHP 코드가 포함되어있을 수 있습니다.

+0

+1 예를 들어, $ string이 POST 또는 GET의 경우, 악의적 인 사용자가 POST에 PHP 코드를 입력 할 수 있습니다 또는'eval'이 실행 된 순간에 실행될 GET 변수를 포함 할 수 있습니다. –

0

당신은 당신의 복제본에 대해 끔찍한 충고를하고 있습니다. 여전히 "1>2b" 같이 유효하지 않은 문자열에 대해 true를 반환

$str = "0>0.1"; 
if (preg_replace('/^(\d+\.?\d*)([><])(\d+\.?\d*)$/e', "$1 $2 $3", $str)) 
{ 

하는 것으로 다음은 실제로 결과를 평가하는 안전 평가의 변종이다. 당신은 그것에 대한 매치와 별도의 표현식 평가가 필요합니다. (여기에 가짜 미니 파서를 작성하는 것은 어렵지 않지만 문제는 분명히 과장입니다.)