1

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

如果 preg_match(string or string) and (string or string) { do this }

$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";
}

?>

4

1 回答 1

0

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

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

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

于 2012-08-29T14:38:50.250 回答