2012-02-29 19 views
1

我有客戶以1 + 2的身份進入臥室,而不是輸入在這種情況下的總體總數3.在PHP中有一種方法,可以讓我使用簡單的字符串並生成總和值?來自文本字符串的總和值

$bedrooms = '1 + 2'; 
+2

爲什麼不清理驗證?所以客戶不要輸入1 + 3?可能是更乾淨的路要走,因爲你可能會打開自己1米+3小孩等等; – Jakub 2012-02-29 18:43:20

+0

如果我輸入「2&也許是第三」,該怎麼辦?需要一個數字,有一個評論/文本字段作爲進一步的說明。 – Wrikken 2012-02-29 18:53:23

+0

我必須這樣離開它,因爲1 + 2意味着主臥室有一間臥室,二樓有兩間臥室,這就是他們喜歡它顯示的方式。現在我正在爲我的客戶和我提供鏡像的服務提供商提供鏡像,以避免這種情況。我保持原樣並嘗試下面的答案。感謝您的建議。 – Tim 2012-02-29 19:02:19

回答

3

你可以做這樣的事情:

$bedrooms = array_sum(explode("+", str_replace(" ", "", "1 + 2"))); 
+0

哦我的你更懂事。完美解決。謝謝。 – Tim 2012-02-29 19:05:17

2

查找eval - 這應該做的伎倆。

但要確保你有一個良好的正則表達式,以確保輸入不會做任何傷害

例如`^ [1-9] + *(+ [1-9] +) $」

+1

[eval is evil](http://stackoverflow.com/a/951868/259457) – Travesty3 2012-02-29 18:45:46

+1

@T - 瞭解這些漏洞並且仍然能夠安全地使用它;)+1對於衛生正則表達式Ed! – Lix 2012-02-29 18:47:52

+0

Perl中的eval使代碼更安全 - 它實現異常! – 2012-02-29 18:51:53

1

由+ 解析字符串到數組 加值

0

試試這個

$bedrooms = 1 + 2; 
    $pattern = '/([a-zA-Z \+\-])+/'; 
    $replacement = '+'; 
    echo array_sum(explode('+', preg_replace($pattern, $replacement, $bedrooms))); 

只是爲了確保一些字符在輸入字符串