PHP正则表达式使用组来匹配单词(preg_match)

时间:2012-08-29 14:26:23

标签: php regex

我正在尝试使用preg_match匹配正则表达式中的2个单词。 这是我的声明的简化版本,下面是实际代码。 当我在表达式中使用2个组时,表达式不起作用。请帮忙。

如果是preg_match(字符串或字符串)和(字符串或字符串){ 做这个 }     

$subject = 'over £200 and under £300';

$minPrice = 0;
$maxPrice = 10000;

if (preg_match_all( '#£.*?([0-9]+)#i', $subject, $priceMatches)) {
    foreach ($priceMatches as $price) {}
     if (preg_match('/(over|above)(under|below|beneath)/i',$subject)) {
        $minPrice = $price[0];
        $maxPrice = $price[1];
        $priceOrder = "#!No=0&Nf=P_Price|BTWN+".$minPrice."+".$maxPrice."&N=&side=&Ns=P-SYSTEM_Price_Revenue|1&perPage=12";
        echo 'MIN PRICE ' . $minPrice . "\n";
        echo 'MAX PRICE ' . $maxPrice . "\n";

    } else {
   echo "no e found";
    }
} else {
   echo "no e found";
}

>

1 个答案:

答案 0 :(得分:0)

如果您始终匹配的顺序始终相同,则只需将正则表达式更改为:

/(over|above).*(under|below|beneath)/i

这将允许两个单词之间的任何内容。以前,你的正则表达式期望这些单词是背靠背的(事实并非如此)。