2012-03-31 9 views
0

eregi()の機能は、ここではpreg_match()の機能を以下のコードで置き換えることができますか?どのように `eregi()`関数を `preg_match()`関数で以下のコードに置き換えることができますか?

function getOS($userAgent) { 
    // Create list of operating systems with operating system name as array key 
    $oses = array (
     'iPhone' => '(iPhone)', 
     'Windows 3.11' => 'Win16', 
     'Windows 95' => '(Windows 95)|(Win95)|(Windows_95)', // Use regular expressions as value to identify operating system 
     'Windows 98' => '(Windows 98)|(Win98)', 
     'Windows 2000' => '(Windows NT 5.0)|(Windows 2000)', 
     'Windows XP' => '(Windows NT 5.1)|(Windows XP)', 
     'Windows 2003' => '(Windows NT 5.2)', 
     'Windows Vista' => '(Windows NT 6.0)|(Windows Vista)', 
     'Windows 7' => '(Windows NT 6.1)|(Windows 7)', 
     'Windows NT 4.0' => '(Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT)', 
     'Windows ME' => 'Windows ME', 
     'Open BSD'=>'OpenBSD', 
     'Sun OS'=>'SunOS', 
     'Linux'=>'(Linux)|(X11)', 
     'Safari' => '(Safari)', 
     'Macintosh'=>'(Mac_PowerPC)|(Macintosh)', 
     'QNX'=>'QNX', 
     'BeOS'=>'BeOS', 
     'OS/2'=>'OS/2', 
     'Search Bot'=>'(nuhk)|(Googlebot)|(Yammybot)|(Openbot)|(Slurp/cat)|(msnbot)|(ia_archiver)' 
    ); 

    foreach($oses as $os=>$pattern){ // Loop through $oses array 
    // Use regular expressions to check operating system type 
     if(eregi($pattern, $userAgent)) { // Check if a value in $oses array matches current user agent. 
      return $os; // Operating system was matched so return $oses key 
     } 
    } 
    return 'Unknown'; // Cannot find operating system so return Unknown 
} 
+0

この宿題はありますか? –

答えて

2

あなたは、 "i" は右のパターン区切り文字の後に大文字小文字を区別しないマッチングそう

を有効にするために追加する必要があります。

a|b 

は次のようになります。

/a|b/i 

へpreg_matchの前にすばやく書きますか:

$pattern='/'.$pattern.'/i'; 

それ以外の場合は、あなたがこのようにすべてのあなたのパターンや代替を変更する必要があります。

(Linux)|(X11) 

/(Linux)|(X11)/i 
+0

+1それを具体化してください、私はそれを行う必要がどのように?コードで私を見せてください –

+0

ありがとうございました...... :) –

+0

:)私はiPhone上です。 – kappa

0

なりますが

if(preg_match("#".$pattern."#", $userAgent)) { 

または

if(preg_match('`'.$pattern.'`i', $userAgent)) { 
のいずれかを使用することができます
関連する問題