数学の問題を取り込もうと試みるのにpreg_match()
がありますが、部分的にしか働いていません。それは「プラス」と最後の「1」をキャプチャしていますが、何らかの理由で最初の「1」をキャプチャしません。私は間違って何をしていますか?簡単な数学の問題を取り除くためのPreg_match
$string = "one plus one";
if (preg_match("~([0-9]|one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve|thirteen|fourteen|fifteen|sixteen|seventeen|eighteen|nineteen|twenty|thirty|forty|fifty|sixty|seventy|eighty|ninety|hundred|thousand|million|\-|)+(\+|\-|\*|\/|plus|add|minus|subtract|time|multiply|divide)([0-9]|one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve|thirteen|fourteen|fifteen|sixteen|seventeen|eighteen|nineteen|twenty|thirty|forty|fifty|sixty|seventy|eighty|ninety|hundred|thousand|million|\-|)+~", $string, $match)) {
print_r($match);
}
結果:
Array ([0] => one plus one [1] => [2] => plus [3] => one)
期待される結果:
Array ([0] => one plus one [1] => one [2] => plus [3] => one)
繰り返しキャプチャが格納されていません。各繰り返しで、キャプチャグループの内容が新しいもので上書きされます。 –
@CasimiretHippolyteそれでは、どうすればいいのですか? – frosty