2012-02-29 18 views
1

私はクライアントに、この場合合計3を入力するのではなく、1 + 2として寝室を入力します。PHPでは、単純な文字列を使用して合計値?テキスト文字列からの合計値

$bedrooms = '1 + 2'; 
+2

検証をクリーンアップしてみませんか?クライアントが1 + 3を入力しないようにするには?あなたが1m + 3childなどのようなものに自分自身を開く可能性があるので、行くよりきれいな方法かもしれません。 – Jakub

+0

「2&3」と入力するとどうなりますか?詳細な説明のために、数字を必要とし、コメント/テキストフィールドを持っています。 – Wrikken

+0

私は1 + 2がメインフロアに1ベッドルーム、2フロアに2ベッドルームを意味するので、このようにしなければなりません。今私は私のクライアントとプロバイダーのリストをミラーリングすることになっています。私はこのようにしたくないのです。私はそのままで、以下の答えを試してみてください。提案していただきありがとうございます。 – Tim

答えて

3

あなたはこのような何か行うことができます:配列に

$bedrooms = array_sum(explode("+", str_replace(" ", "", "1 + 2"))); 
+0

ああ、あなたはもっと愉快です。それは完璧に機能しました。ありがとうございました。 – Tim

2

ルックアップeval - これはすべきことです。

しかし、あなたが入力

例えば害をしないことを保証するために、良い正規表現を持っていることを確認してください`^ [1-9] + *(+ [1-9] +) $」

+1

[eval is evil](http://stackoverflow.com/a/951868/259457) – Travesty3

+1

@T - 脆弱性を知っていてもそれを安全に使用できることはありません;)衛生用正規表現Ed! – Lix

+0

Perlでevalがコードを安全にする奇妙なこと - 例外を実装しています! –

1

は+ で、その文字列を解析し 追加値は

0

この

$bedrooms = 1 + 2; 
    $pattern = '/([a-zA-Z \+\-])+/'; 
    $replacement = '+'; 
    echo array_sum(explode('+', preg_replace($pattern, $replacement, $bedrooms))); 

はいくつかの文字が入力文字列であることを確認してみてください

関連する問題