Если можно доверять всем строкам шаблона ($userAgent
и iphone
), чтобы они не содержали специальных символов регулярного выражения (()[]!|.^${}?*+
), тогда вы просто окружаете регулярное выражение eregi
косыми чертами (/
) и добавляете i
после последней косой черты (что означает «без учета регистра»).
Итак:
eregi($userAgent,$browserAgent) --> preg_match("/$userAgent/i",$browserAgent)
eregi("iphone",$browserAgent) --> preg_match('/iphone/i',$browserAgent)
Однако, вы просто пытаетесь сопоставить $userAgent
как есть в $browserAgent
? Например, если конкретный $userAgent
был foo.bar
, хотите ли вы, чтобы .
соответствовал буквальному периоду, или вы хотели бы интерпретировать его в его смысле регулярного выражения («соответствует любому символу»)?
Если первое, я бы предложил вам полностью отказаться от регулярных выражений и использовать stripos($haystack,$needle)
, который ищет строку $needle
в $haystack
(без учета регистра). Тогда вам не нужно беспокоиться о (скажем) звездочке в $userAgent
, интерпретируемой в смысле регулярных выражений, а не в буквальном смысле.
Если вы используете stripos
, не забудьте, что он может вернуть 0
, который оценивается как false
, поэтому вам нужно использовать === false
или !== false
(см. Документацию, которую я связал).