1

preg_match を使用して、正規表現で 2 つの単語を一致させようとしています。これは、以下の実際のコードを使用した私のステートメントの簡略化されたバージョンです。式で 2 つのグループを使用すると、式が機能しません。助けてください。

if 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

これにより、2 つの単語の間のすべてが許可されます。以前は、正規表現は単語が連続していることを期待していました (そうではありませんでした)。

于 2012-08-29T14:38:50.250 に答える