0

PHPの文字列で正規表現が一致した場合、何かをエコーし​​ようとしています。

実行するif(true){//...}とスイートが実行されますが、実行すると機能しif(regex){//..}ません。つまり、スイート内にあるエコーは実行されていません。

私は何を間違っていますか?

基本的に私がやろうとしているのは、$query が 2+2、3*5、または 4.0 / 1.2 のように見える場合に何かをエコーすることです

これが機能しているものです:

<?php
if(true){
    echo "<div class=\"calc\">Mathematical Operation</div>";
}
?>

$query (2+2) に一致するはずなのに、うまくいかないのは次のとおりです。

<?php
if(preg_match('/(\d+)(\s)*([+/*-])(\s)*(\d+)/', $query)){
    echo "<div class=\"calc\">Mathematical Operation</div>";
}
?>
4

3 に答える 3

2

警告の内容を読んでください。

PHP Warning:  preg_match(): Unknown modifier '*' in php shell code on line 1

の前に何か問題があることを意味し*ます。

この場合、エスケープされていない区切り文字/です ( から推測できるようにunknown modifier)。

使用する:

// ---------------------------v (note the backslash here to escape the delimiter)
if (preg_match('/(\d+)(\s)*([+\/*-])(\s)*(\d+)/', $query)){
    echo "<div class=\"calc\">Mathematical Operation</div>";
}
于 2013-06-08T20:24:50.067 に答える