PHPで文字列から数値に変換する方法について

このQ&Aのポイント
  • PHPで文字列から数値に変換する方法について質問です。数値と認識されるものについては、そのまま、またはキャストするだけで使用できますが、割り算が含まれる場合に数値として認識させる方法はありますか?
  • 質問者は、特定の文字列を数値として認識させたい場合について尋ねています。例として、文字列「6861/2500」を数値部分のみを認識する方法を知りたいと述べています。
  • 質問者は「6861/2500」の結果を2.7444と取得したいと考えています。自分で計算記号から数値部分を区切る方法を使わずに、この結果を得る方法はあるのでしょうか?
回答を見る
  • ベストアンサー

PHPで文字列から数値に変換する方法について

PHP5で数値の文字列から数値にする方法で質問です。 数値と認識されるものについては、そのまま、およびキャストするだけでそのまま使えると思いますが、 割り算(「/(スラッシュ)」)が入っているような計算式を数値として認識させる方法はありますでしょうか? 例えば $a="6861/2500"; echo (float)$a; echo "<br>"; とすると、先頭の6861という数値に変換されます。 if(is_numeric($a)){ echo "数値"; }else{ echo "文字"; } の結果は文字という判定になりました。 6861/2500 ↓ 2.7444 と取得したいです。 自分で計算記号から数値部分を区切って計算するような方法をとらないと難しいでしょうか?

  • PHP
  • 回答数2
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

evalを使うならこんな感じの方がよいかも <?PHP $a = "6861/2500"; $b=eval("return ".$a.";"); print $b; ?> データを検証するならこんな感じ? <?PHP $pattern="/^\s*(\d+)(\s*[\/*+-]\s*(\d+))+\s*$/"; $a="1+2 / 3-4 *5"; $b=0; if(preg_match($pattern,$a)) $b=eval("return ".$a.";"); print $b; ?>

その他の回答 (1)

  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.1

evalを使うことで実現できます。 http://php.net/manual/ja/function.eval.php $a = "6861/2500"; eval('$result='.$a.';'); //「$result=6861/2500;」というコードを実行 echo $result; マニュアルページにもありますが、 ユーザの入力をそのままevalに渡すことは危険ですので絶対に避けてください。

関連するQ&A

  • 全角数値の判定

    教えて頂けますか? フォームからPOSTされた文字列が半角数値、または文字列の場合許可し、全角数値の場合拒否したいのですが 全角数値が is_numeric で数値として認識しない為 うまくいきません。 他に良い方法がありますか? よろしくおねがいします。 if ( strlen($_POST['test']) != mb_strlen($_POST['test'],'UTF-8') && is_numeric($_POST['test']) == TRUE ){ echo '半角で入力してください。<br />'; }

    • ベストアンサー
    • PHP
  • 文字列のセルを数値変換できますか?

    エクセル初心者です。 別のHP等から拾った数値をエクセルに貼っつけて、簡単なデータ計算をしています。 その際拾ったままだと「123円」と「円」がついて文字列になってしまいます。 そのままだと計算できないのです。 「円」だけとって数値変換か、 もしくは、そのまま数値変換してなんとか計算できるような 数式、方法を教えていただけませんでしょうか? どなたか教えてください。

  • PHPでカンマ区切り文字列を数値に変換するには

    PHPでカンマ区切り文字列を数値に変換するにはどうすればいいのでしょうか。 例)$a="12201,11912"が文字列を認識されるのですが数値認識させたいです。 以上よろしくお願いします。

    • ベストアンサー
    • PHP
  • VBAで文字列を数値に変換したい

    こんにちは! システムから自動で出力されるExcelファイルがあります。そのファイルを開くと数値が文字列として認識されています。いつも数値に直しているのですが、下記の方法でなおしています。 エラー チェック機能を使用して文字列形式の数値を変換する 他にも文字列を数値になおす方法は下記URLを参考にしています。 http://office.microsoft.com/ja-jp/excel-help/HP010342308.aspx ただ、これをVBAで変換できないかと思っています。 例えば、A~G列まで文字列データがはいっています。このA~G列のデータをVBAで一気に数値化したいのですが、どのようにすればおこなえるでしょうか?

  • 文字列分割方法

    フォームから入力されたデーターを文字数により4分割したい場合、 シングルバイトとマルチバイト文字列が混在していると、文字化けが起こってしまいます。 私が考えた方法は <?php $test="あああああいいいいいうううううえええええ"; $length = strlen($test); $length2 = (int)$length/4 $quarter[] = substr($test,0,$length2); $quarter[] = substr($test,$length2,$length2); $quarter[] = substr($test,$length2*2,$length2); $quarter[] = substr($test,$length2*3,$length2); echo $quarter[0]."<BR><BR>"; echo $quarter[1]."<BR><BR>"; echo $quarter[2]."<BR><BR>"; echo $quarter[3]."<BR><BR>"; ?> というものだったんですが、この場合$testに半角文字のaなどが入ると 文字化けしてしまいます。 上手く、マルチバイト・シングルバイト複合文字列を文字数により4分割する方法はないでしょうか? ご教授ください

    • ベストアンサー
    • PHP
  • 文字列か数値か判定する条件式

    こんにちは。 A1が文字列なら0。A1が数値ならA1そのもの。 というIF文を作りたいのですが、  =if(A1=文字列,0,A1)  ←こんな感じ 条件式はどう書けばいいのでしょうか?  A1=string ←ではだめでした。  not A1=numeric ←でもだめでした。 ご教示ください。

  • Excelで数値が文字列になっています

    Excel2010で「このセルにある数値がテキスト形式か、またはアポストロフィで始まっています」という警告が表示されたりして、計算が出来ません。 打ち直ししたり、「エラーチェックルール」で「文字列形式の数値、、またはアポストロフィで 始まる数値」のチェックを外したりして計算は出来るようになります。 「表示形式を変えてもセルの中の値は変化しません。数値データは数値のまま、文字列データは文字列のままです。」とは本当ですか? 本当ならば、数字の保存形式が文字列データかどうかを確かめる方法はありますか? なお、ISNUMBERという関数ではTRUEと出ます。

  • 文字列を含むセルを数値に変換する方法

    79062150007という数字の7906という部分だけ取り出すのに、midを使ってやってみたのですが、 =mid(文字列,1,4) とそのまま残るだけで、うまく変換しません。 文字列を数値に変換する方法を調べ、色々試してみたのですが、うまくいきません。 どうすれば良いのでしょうか?

  • 数値を文字列として結合した結果を数値に変換する

    お世話になっております。 プログラムで、文字を結合した結果を数値に変換する処理にて 処理を高速化できる記述方法があるか質問させてください。 ・やりたいこと  複数の数値を文字列として結合した結果を数値型に高速で変換したい。 ・現在のコード(考え方 C#にて)  今、以下のように数値変換しているのですが、  これ以外の書き方で、スマートな方法はないでしょうか?  ※結果がわかりやすいように変数はその都度宣言しています。 int i1 = "10"; int i2 = "2"; string sConcat = i1.ToString() + i2.ToString() ; // "102" // To Int int convertedInt = int.Parse( sConcat ) ; //102 // To Hex int convertedHex = Convert.ToInt32( sConcat , 16 ); // 0x102 数値を文字にして結合して・・・またキャストというのが 無駄なような気がしています。 すみませんが、良い方法があればご教授ください。

  • 文字列の加算

    OS  :WindowsXP Pro SP1 開発環境:VisualStudio .NET 2003 開発言語:C# 開発形態:Windowsアプリケーション プログラミング初心者です。どうかよろしくお願い致します。 現在、あるアプリケーションを作成しております。 その中で、数値の入った文字列を受け取り、それを全て加算しようとしております。 例えば、 引数の文字列が"123456789"だとしたら、そのメソッド内で1+2+3+4+5+6+7+8+9を計算し、答えを返却値とする。 私は文字列をint型にキャストして計算しようと思ったのですが、うまくキャストできません。string型はint型にキャストできないのでしょうか? また他に文字列の数値の加算をする方法がありましたら、どなたかご教授お願い致します。

専門家に質問してみよう