【发布时间】:2011-09-12 03:00:37
【问题描述】:
不确定这是如何用更好的标题来描述的,但这是我的问题:
我有一个带有多个布尔选项的替换功能:
- 正则表达式
- 整个单词(仅当 regex==false 时)
- 区分大小写
这意味着我必须从 4 种方法中选择一种来替换我的文本。目前我的代码如下所示:
(这里的那些选项确实是 true/false 作为字符串,通过 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 添加更多选项,这将变得越来越复杂。
有没有更好或更优雅的方式来写这个?
【问题讨论】:
-
我问了一个类似的问题并得到了很好的答案,你可能想看看。 stackoverflow.com/questions/7360600/…
-
为什么在第一种情况下使用
preg_replace,在第二种情况下使用str_replace? -
@Evan Cordell:因为用户可以在正则表达式和纯文本模式之间切换以进行搜索和替换
-
在顶级“then”和“else”分支中调用函数并在这些函数中包含简单的 if 有什么问题?
标签: php coding-style if-statement