匹配字符串

时间:2015-11-20 06:23:56

标签: php regex

我使用以下代码来匹配字符串中的单词但有一些问题。

$string='Hi how are u am fine and where are you'; 
$shop = array( array( Title => "no",),array( Title => "block",),array( Title => "How",));
foreach($shop as $t=>$v)
    {
        foreach($v as $n)
        {   
            if((preg_match("/\b^([^\s]*)$|" . $n . "\b/i",$string)))                
            {
                $match='Y';
                break;
            } 
        }
    }

案例:1 $string='block'正常;

案例:2 $string='words block'正常;

案例:3 $string='block word'无效。

请找到错误,有人帮我解决问题。

1 个答案:

答案 0 :(得分:0)

根据您希望实现的目标,您可能需要重新考虑正则表达式模式构建的方法。但是,当前的问题有一个问题:您在双引号字符串文字中定义它,其中反斜杠用于引入转义序列。要真正匹配单词边界,您需要使用双反斜杠(即"/\\bHow\\b/"将匹配整个单词How"/\bHow\b/"匹配退格符,如何和退格字符。)

此外,\b字边界也匹配字符串的开头。没有必要使用\b^ - 这是不明确的。我想你首先尝试匹配任何非空白字符串,然后是特定的整个字。

使用:

$re = '/^([^\s]*)$|\b' . trim($n) . '\b/i';

请参阅IDEONE demo,为$string='block word'显示Y.