Php 希望将短语与不区分大小写的preg_replace匹配

Php 希望将短语与不区分大小写的preg_replace匹配,php,regex,preg-match,Php,Regex,Preg Match,我想检查短语“company billing”,并检查整个短语是否不区分大小写(即,应选择“company billing”、“company billing”、“company billing”等) 我这里的代码似乎不想接收它。我肯定我有一些不正确的正则表达式: if (preg_match("/company billing\b/i", $post['message']) !== false) { $post['message'] = preg_replace('/billing\b/i

我想检查短语“company billing”,并检查整个短语是否不区分大小写(即,应选择“company billing”、“company billing”、“company billing”等)

我这里的代码似乎不想接收它。我肯定我有一些不正确的正则表达式:

if (preg_match("/company billing\b/i", $post['message']) !== false) {
  $post['message'] = preg_replace('/billing\b/i', 'Company Billing', $post['message']);
}

这应该足够好了:

if (preg_match("/\bcompany billing\b/i", $string)) {
   // handle match success case
}
else {
   // handle match failure case
}
如果匹配失败,则返回0


只有在发生错误时才会返回FALSE。

除非您的正则表达式以后需要变得更复杂,否则此处的效果更好。也不需要条件,因为如果字符串中未找到任何形式的“公司账单”,则不会进行任何更改:

$post['message'] = str_ireplace("company billing", "Company Billing", $post['message']);

你的输入字符串是什么?您得到了什么结果?为什么要对
$string
进行匹配,而对
$post['message']
进行替换?那不应该是
$\u POST
而不是
$POST
?我忘了把它放在$POST['message']部分。这就是我现在拥有的。它似乎不是在寻找整个短语的整体,而只是第一个单词“company”。这就触发了它。@Barmar Ok,明白了,无论如何,我已经用我的注释完成了它,以显示在何处放置失败案例以及在何处放置成功代码。他很可能对在失败案例中做任何事情都不感兴趣。@Barmar:没问题,我只是想让阅读它的任何人都清楚,一个空的else块不会伤害任何东西:p这就是我现在拥有的。然而,它似乎忽略了短语的“账单”部分,而不是整个短语“公司账单”,这可能只是另一个小的打字错误,但这是:$post['message']=preg_replace('/billing\b/i','company billing',$post['message']);可能需要更改为:$post['message']=preg_replace('/company billing\b/i','company billing',$post['message'])。。。前者将以“公司账单”取代“公司账单”。后者将用“公司账单”代替