我有這樣回聲內如果循環
$string = "0>0.1";
我想這樣
if($string)
{
///something
}
但評估這個的,如果循環中的變量即時得到一個錯誤,如果我這樣做。如何去做
我有這樣回聲內如果循環
$string = "0>0.1";
我想這樣
if($string)
{
///something
}
但評估這個的,如果循環中的變量即時得到一個錯誤,如果我這樣做。如何去做
你不明白評估或字符串是如何工作的。 如果你把任何東西放入一個字符串中,它將不會被評估,而是從那個時候開始包含這個值。
$string = "0>0.1"; // contains "0>0.1"
$bool = 0>0.1; // contains TRUE
IF語句需要一個布爾值而不是字符串。
您可以使用eval
來評估字符串中的內容。請記住,eval
是邪惡的,任何PHP代碼都可能在其中。
+1 也許可以更好地說明您的觀點: 如果示例中的$ string來自POST或GET,惡意用戶可以在POST中輸入PHP代碼或GET變量,這會在'eval'執行時執行。 – 2011-04-14 12:52:59
你得到了一些可怕的建議與您的副本。這裏是一個更安全的eval變種,實際上將評估一個結果:
$str = "0>0.1";
if (preg_replace('/^(\d+\.?\d*)([><])(\d+\.?\d*)$/e', "$1 $2 $3", $str))
{
注意,這將仍然是無效的字符串返回真像"1>2b"
。你需要一個匹配和一個單獨的表達式評估。 (在這裏寫一個人造迷你解析器並不難,但對你的問題顯然是過分的)
哪個錯誤?我什至不知道,這段代碼應該做什麼(一個非空字符串總是在這裏被評估爲「true」)。 – KingCrunch 2011-04-14 12:24:08
'if()'不會形成循環。 – Spudley 2011-04-14 12:25:20
嘿夥計們,@Deepak問的是真正的問題,他想用eval。 – 2011-04-14 12:37:41