0

あらゆる種類の算術演算を記述できるテキスト ファイル (math.txt) があります。PHP を使用してファイルを読み取り、出力を決定する必要があります。以下のコードを使用して、ファイルの内容を読み取ります。

$file = 'math.txt';  // 2+3 is written in math.txt

$open = fopen($file, 'r');

$read = fgets($open);
$close = fclose($open);

上記のコードを使用して、コンテンツを取得しています。ただし、コンテンツをエコーすると、出力 (つまり 5) が表示されるのではなく、元のコンテンツ (つまり 2+3) が表示されます。この場合、どうすればいいのかわかりません。

これに関するヘルプをいただければ幸いです。前もって感謝します。

4

2 に答える 2

1

ただし、コンテンツをエコーすると、出力 (つまり 5) が表示されるのではなく、元のコンテンツ (つまり 2+3) が表示されます。

これは完全に予想される動作です。ファイルから文字列を読み取ります。PHP に式を計算させたいことをどのように知る必要がありますか?

式を分析して結果を計算する単純なパーサーを実装する (またはインターネットで検索する) 必要があります。

dave1010は、彼の投稿の 1 つで非常に優れた機能を提供しました。

function do_maths($expression) {
  eval('$o = ' . preg_replace('/[^0-9\+\-\*\/\(\)\.]/', '', $expression) . ';');
  return $o;
}

echo do_maths('1+1');

ただし、入力に構文エラーが含まれていると、スクリプトの実行が停止する可能性があることに注意してください。

これは、実際のパーサーを使用するより優れたライブラリです: https://github.com/stuartwakefield/php-math-parser

于 2013-08-11T14:13:16.883 に答える
0

演算子に従ってファイル解析を読み取ります

        like     file=2*5;
             $open = fopen($file, 'r');

              $read = fgets($open);


                $key = preg_split("/[*+-\/]+/", $read);

                 $operator= substr($a, strpos($a,$key[1])-1,1);


                 if($operator=='+')
                 {
                 echo $key[0]+ $key[1];
                 }
                 else  if($operator=='-')
                 {
                 echo $key[0]- $key[1];
                 }
                 else  if($operator=='*')
                 {
                 echo $key[0]* $key[1];
                 }
                 else  if($operator=='/')
                 {
                 echo $key[0]/$key[1];
                 }
于 2013-08-11T14:58:16.373 に答える