2009-07-30 11 views
0

私は、文字列を見つけるためにテキストエントリを読むdbテーブルにアクセスしています...その文字列に基づいて、新しい変数を作成します。あなたはいつもあなたが再びmanual's page about the switch statementを読むことをお勧めしますPHP switch-caseロジックの作業

​​

に終わるだろう

<?php 

    $haystack = "Additional Licenses: +2 Licenses /br/ Back-up CD-ROM: No"; 
    $needle = "+0"; 

    switch ($needle) { 
     case '+1': 
      if (strstr($haystack, $needle)) { 
       $actpurch = "3"; 
      } else { 
       break; 
      } 
     case '+2': 
      if (strstr($haystack, $needle)) { 
       $actpurch = "4"; 
      } else { 
       break; 
      } 
     case '+3': 
      if (strstr($haystack, $needle)) { 
       $actpurch = "5"; 
      } else { 
       break; 
      } 
     default: 
      $actpurch = "2"; 
      break; 
    } 

    echo "Activations Purchased: " . $actpurch; 

?> 
+2

質問がありますか? –

答えて

0

$needle = "+0"ので:

はここでソースです。

+0

正しいものを返却する方法を教えてください。 $ haystackは実際に顧客が購入したアクティベーションの数に応じて、dbテーブルからエントリを実際に取得します(変更されます)。したがって、問題は次のとおりです。変更するエントリでスイッチケースを動作させるにはどうすればよいですか?フルテキストは "+#"を除いて同じままです。ほとんどが「+0」になりますが、それは不可能です。私は、各顧客が適切なアクティベーション回数に制限されていることを保証する必要があります。 –

0

$needleにはswitchがあり、固定値は"+0"です。従ってあなたのdefaultcaseだけが実行されます。

0

私はスイッチを一切使用しません。あなたがしようとしているのは、正規表現で行うことができる番号を抽出することです。PHP Manualを参照してください。例:

$haystack = "Additional Licenses: +2 Licenses /br/ Back-up CD-ROM: No"; 
$licences = 2; 

$extra = 0; 
if (preg_match('/Additional Licenses: \+(\d+) Licenses/', $haystack, $matches)) { 
     $extra = intval($matches[1]); 
} else { 
     die('Error: couldn\'t find number of licences'); 
} 

$actpurch = $licences + $extra; 
echo $actpurch; 

正規表現は文字列とパターン(\ d +は1桁以上一致)と一致します。

関連する問題