不知道如何形容這一個更好的標題,但這裏是我的問題:比嵌套的if-else更好的解決方案?
我有多個布爾選項的替換功能:
- 正則表達式
- 整個單詞(僅當正則表達式= = FALSE)
- 區分大小寫
,這意味着我必須選擇1 4的方法來取代我的文字。目前我的代碼看起來是這樣的:
(這裏的選擇確實是真/假作爲一個字符串,通過POST從一組jquery checkboxes傳遞)
if($regex=='true')
{
if($casesens=='true')
{
$p->aData['body'] = preg_replace('/'.$q.'/', $r, $p->aData['body']);
}
else
{
$p->aData['body'] = preg_replace('/'.$q.'/i', $r, $p->aData['body']);
}
}
else
{
if($wwords=='true')
{
$q = " ".$q." ";
$r = " ".$r." ";
}
if($casesens=='true')
{
$p->aData['body'] = str_replace($q, $r, $p->aData['body']);
}
else
{
$p->aData['body'] = str_ireplace($q, $r, $p->aData['body']);
}
}
,你可以看到,如果有在兩個條件下比較$casesens
,如果我必須向UI添加更多選項,則這變得越來越複雜。 有沒有更好或更優雅的方式來寫這個?
我問了一個類似的問題,並得到很好的答案,你可能想看看。 http://stackoverflow.com/questions/7360600/detect-4-permutations-of-2-variable-values-in-a-switch-case-statement –
你爲什麼在第一種情況下使用'preg_replace',而'str_replace '在第二? –
@Evan Cordell:因爲用戶可以在正則表達式和純文本模式之間切換以進行搜索和替換 – iHaveacomputer