За последние 24 часа нас посетили 22368 программистов и 1144 робота. Сейчас ищут 726 программистов ...

Помогите заменить eregi() на preg_match()

Тема в разделе "Регулярные выражения", создана пользователем Hatake, 24 мар 2010.

  1. Hatake

    Hatake Активный пользователь

    С нами с:
    24 мар 2010
    Сообщения:
    2
    Симпатии:
    0
    Доброго времени суток... у меня такая проблема:
    т.к. в php 5.3 упразднена функция eregi(), мне необходимо заменить ее на preg_match()... помогите, пожалуйста, составить аналогичную строку для: eregi($settings['opening_page']."$", FUSION_REQUEST.(FUSION_QUERY ? "?".FUSION_QUERY : ""))

    если просто пишу: preg_match($settings['opening_page']."$", FUSION_REQUEST.(FUSION_QUERY ? "?".FUSION_QUERY : ""))
    выдает ошибку:
    Warning: preg_match() [function.preg-match]: No ending delimiter '$' found in Z:\бла-бла-бла.php on line 44

    или же:
    Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in Z:\бла-бла-бла.php on line 44
     
  2. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
  3. Hatake

    Hatake Активный пользователь

    С нами с:
    24 мар 2010
    Сообщения:
    2
    Симпатии:
    0
    Спасибо огромное!!! Я заглядывал... просто там во всех примерах параметр $pattern передается конкретно в форме: "........". А у меня надо передать переменную, да еще и добавить к ней "$". Собственно из-за него вся проблема и была... да и вообще... просто я чайник...:)
     
  4. kirk2005

    kirk2005 Активный пользователь

    С нами с:
    26 фев 2011
    Сообщения:
    1
    Симпатии:
    0
    извините меня такая же фигня с шаблоном.. я чайник еще в пхп, помогите мне с ошибкой в строке, спасибо!
    ---------------------
    ?>
    <?php

    if(preg_match("de",$sprache)) {

    $sprache = $this->language;
    ------------------------------------------
    было ereg
     
  5. Гавриленко Дмитрий

    Гавриленко Дмитрий Активный пользователь

    С нами с:
    17 янв 2010
    Сообщения:
    69
    Симпатии:
    0
    kirk2005

    Работать будет если в переменной $sprache строка а не объект. Ну как я понимаю там у вас двух буквенное обозначение страны... так что все сработает..


    preg_match("|de|",$sprache)
     
  6. SensorX

    SensorX Активный пользователь

    С нами с:
    6 мар 2011
    Сообщения:
    2
    Симпатии:
    0
    Помогите пожалуйста с кодом, тоже выдает ошибку на верхней странице сайта

    Warning: preg_match() [function.preg-match]: No ending delimiter '/' found in J:\бла-бла-бла.php on line 78

    Warning: preg_match() [function.preg-match]: No ending delimiter '/' found in J:\бла-бла-бла.php on line 96

    Warning: preg_match() [function.preg-match]: No ending delimiter '/' found in J:\бла-бла-бла.php on line 159


    вот участки на которые ссылается ошибка
    PHP:
    1. function is_chrome()
    2. {
    3. return(preg_match("chrome", $_SERVER['HTTP_USER_AGENT']));     <--- строка 78
    4. }
    5.  
    6. if(is_chrome())
    7. { ?>
    Видимо я не совсем корректно заменил eregi на preg_match.

    Начальный вид этого участка


    Другие ошибки ведут на такеи участки кода только вместо chrome там opera и safari. Помогите пожалуйста решить проблемкую
    PHP:
    1. <?php
    2. function is_chrome()
    3. {
    4. return(eregi("chrome", $_SERVER['HTTP_USER_AGENT']));
    5. }
    6.  
    7. if(is_chrome())
    8. { ?>
     
  7. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
  8. SensorX

    SensorX Активный пользователь

    С нами с:
    6 мар 2011
    Сообщения:
    2
    Симпатии:
    0
    Огромнейшее спасибо =)
     
  9. le_den

    le_den Активный пользователь

    С нами с:
    24 май 2011
    Сообщения:
    3
    Симпатии:
    0
    Помогите пожалуйста сделать аналогичную замену, имеется такой код:

    PHP:
    1.  
    2. if (ereg('Opera(/| )([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT'])) {
    3.  
    4.             $UserBrowser = "Opera";
    5.  
    6. }
    7.  
    8. elseif (ereg('MSIE ([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT'])) {
    9.  
    10.         $UserBrowser = "IE";
    11.  
    12. }
    13.  
    Нужно ereg заменить на preg_match. Уже по-всякому пытался сделать замену, но постоянно пишет ошибки.
     
  10. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    if (preg_match('/Opera(/| )([0-9].[0-9]{1,2})/', $_SERVER['HTTP_USER_AGENT'])) {

    $UserBrowser = "Opera";

    }

    elseif (preg_match('/MSIE ([0-9].[0-9]{1,2})/', $_SERVER['HTTP_USER_AGENT'])) {

    $UserBrowser = "IE";

    }
     
  11. le_den

    le_den Активный пользователь

    С нами с:
    24 май 2011
    Сообщения:
    3
    Симпатии:
    0
    Огромнейшее спасибо! Я тоже ставил слэши в начале и в конце выражения, но чтобы заработало, нужно убрать (/| ) после слова Opera в первом выражении.
     
  12. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    кстати, символ | - должен присутствовать?
    Если да, то надо (/| ) заменить на (\| )
     
  13. le_den

    le_den Активный пользователь

    С нами с:
    24 май 2011
    Сообщения:
    3
    Симпатии:
    0
    Да, должен присутствовать, спасибо за замечание и за помощь!
     
  14. avegatm

    avegatm Активный пользователь

    С нами с:
    29 июн 2011
    Сообщения:
    1
    Симпатии:
    0
    Адрес:
    Russia, Tver'
    Может и мне поможете?
    хотя уже не актуально.
     
  15. Ruslan_F

    Ruslan_F Активный пользователь

    С нами с:
    1 сен 2011
    Сообщения:
    2
    Симпатии:
    0
    Адрес:
    Almaty
    Здравствуйте уважаемые.
    Помогите пожалуйста найти ошибку, при замене erge на preg_match как указанно выше, предупреждений и ошибок нет, но всё работает только в ИЕ, в опере нет.


    PHP:
    1. function getAgent()
    2.   {
    3.     $result = SPAW_AGENT_UNSUPPORTED;
    4.     $browser = SpawVars::GetServerVar('HTTP_USER_AGENT');
    5.     //echo $browser;
    6.     // check if msie
    7.     if (preg_match('/MSIE[^;]*/i',$browser,$msie))
    8.     {
    9.       // get version
    10.       if (preg_match('/[0-9]+\.[0-9]+/i',$msie[0],$version))
    11.       {
    12.         // check version
    13.         if ((float)$version[0]>=5.5)
    14.         {
    15.           // finally check if it's not opera impersonating ie
    16.           if (!preg_match('/opera/',$browser))
    17.           {
    18.             $result = SPAW_AGENT_IE;
    19.           }
    20.         }
    21.       }
    22.     }
    23.     elseif (preg_match('/Gecko([0-9]*)/',$browser,$build))
    24.     {
    25.       // build date of Mozilla version 1.3 is 20030312
    26.       if ($build[1] > "20030312")
    27.         $result = SPAW_AGENT_GECKO;
    28.     }
    29.     elseif (preg_match('/Opera([0-9]*)/', $browser, $opera))
    30.     {
    31.       if ((float)$opera[1] >= 9)
    32.         $result = SPAW_AGENT_OPERA;
    33.     }
    34.     elseif (preg_match('/Safari/([0-9]*)/', $browser, $safari))
    35.     {
    36.       // safari build 500 or higher (safari 3 or newer)
    37.       if ((float)$safari[1] >= 500)
    38.         $result = SPAW_AGENT_SAFARI;
    39.     }
    40.     return $result;
    41.   }
    42.  
    43.   /**
    44.    * Returns string representation of current user agent to be used as part of file extension or dir name
    45.    * @returns string  
    46.    * @static
    47.    */        
    48.   function getAgentName()
    49.   {
    50.     $result = '';
    51.     switch(SpawAgent::getAgent())
    52.     {
    53.       case SPAW_AGENT_IE:
    54.         $result = 'ie';
    55.         break;
    56.       case SPAW_AGENT_GECKO:
    57.         $result = 'gecko';
    58.         break;
    59.       case SPAW_AGENT_OPERA:
    60.         $result = 'opera';
    61.         break;
    62.       case SPAW_AGENT_SAFARI:
    63.         $result = 'safari';
    64.         break;
    65.       default:
    66.         $result = '';
    67.         break;
    68.     }
    69.     return $result;
    70.   }
    71. }
    Модификатор /i добавил после того, как увидел на форуме автора

    http://forums.solmetra.com/viewtopic.php?f=7&t=16827&p=28532&hilit=eregi#p28532
    Код (Text):
    1. spaw\class\util.class.php(185): if (eregi("MSIE[^;]*",$browser,$msie))
    2.     becomes if (preg_match('/MSIE[^;]*/i',$browser,$msie))
    3.  
    4. spaw\class\util.class.php(188): if (eregi("[0-9]+\.[0-9]+",$msie[0],$version))
    5.     becomes if (preg_match('/[0-9]+\.[0-9]+/i',$msie[0],$version))
    6.  
    7. spaw\class\util.class.php(194): if (!eregi("opera",$browser))
    8.    should not be using regular expressions in the first place since it's matching a constant substring ;-)
    , результата недал.
    Заранее благодарю.
     
  16. vons4

    vons4 Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    1
    Симпатии:
    0
    Помогите пожалуйста
    if (ereg($u[0],$remote_addr)) {$bad_bot++;}
    if (ereg($data[0], $REMOTE_ADDR)) {$bad_bot++;}
    поправить под php 5.3.8
     
  17. Ruslan_F

    Ruslan_F Активный пользователь

    С нами с:
    1 сен 2011
    Сообщения:
    2
    Симпатии:
    0
    Адрес:
    Almaty
    Спасибо
     
  18. Абибац

    Абибац Активный пользователь

    С нами с:
    20 мар 2012
    Сообщения:
    1
    Симпатии:
    0
    Привет парни!
    Не пойму, как preg_match() работает с разделителями?

    если с eregi() через разделитель были перечислены варианты того, что ищем, все работало, например:

    Код (Text):
    1.  if (eregi("(http|://|www|href|/a|blablabla)", $msg)) {echo "такая фигня тут не нужна"; exit;}
    то с preg_match() это не работает, что исправить?
     
  19. godman

    godman Активный пользователь

    С нами с:
    1 авг 2012
    Сообщения:
    5
    Симпатии:
    0
    Пожалуйста, помогите поменять eregi на preg_match, а то получаю такую ошибку "Deprecated: Function eregi() is deprecated":

    Код (Text):
    1. if(trim($_POST['email']) === '')  {
    2.             $hasError = true;
    3.         } else if (!eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$", trim($_POST['email']))) {
    4.             $hasError = true;
    5.             $errorMessage = 'Пожалуйста, введите правильный е-майл!';
    6.         } else {
    7.             $email = trim($_POST['email']);
    8.         }
     
  20. Николай1

    Николай1 Новичок

    С нами с:
    17 апр 2015
    Сообщения:
    1
    Симпатии:
    0
    Всем привет что-то не могу решить такой вапрос (Устаревшие: Функция eregi () является устаревшим в /та та та ра рам.php на линии 127) перехожу на preg_match пишет (Внимание: preg_match (): разделитель не должен быть буквенно-цифровым или обратная косая черта в /та та та ра рам.php на линии 127 вот сама линия 127
    Код (Text):
    1. if (isset($_SERVER['HTTP_REFERER']) && !preg_match( str_replace('.','\.',$_SERVER['HTTP_HOST']), $_SERVER['HTTP_REFERER']) && $ref=@parse_url($_SERVER['HTTP_REFERER'])){
    2. if (isset($ref['host']))$_SESSION['http_referer']=$ref['host'];}
    подскажите пожалуйста
     
  21. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    изначальный вариант напишите
     
  22. Pers2012

    Pers2012 Новичок

    С нами с:
    26 мар 2016
    Сообщения:
    1
    Симпатии:
    0
    Всем привет!
    Друзья, не сочтите за труд, помогите новичку исправить функцию ereg() на preg_match() в выражении:
    Код (PHP):
    1. if ((!ereg($_SERVER['HTTP_HOST'], getenv("HTTP_REFERER"))) and isset($_POST["go"])) 
    Спасибо.

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
     
  23. vanya8

    vanya8 Новичок

    С нами с:
    14 июн 2016
    Сообщения:
    2
    Симпатии:
    0
    Помогите пожалуйста заменить ereg на preg_match.
    Код (Text):
    1. !ereg($this->mask,$value)
    Просто замена ereg на preg_match исправляет ошибку синтаксиса но код получается не рабочим.
     
  24. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    @vanya8 что в аргументах функции? Что тут $this->mask и тут $value.
     
  25. vanya8

    vanya8 Новичок

    С нами с:
    14 июн 2016
    Сообщения:
    2
    Симпатии:
    0
    Я в php не силен, вот весь файл:
    Это файлик AttributeDef.php из ltsp-cluster-control

    Код (Text):
    1. <?php
    2.  
    3. require_once 'Attribute.php';
    4. require_once 'dbFunctions.php';
    5.  
    6. class AttributeDef {
    7.  
    8.     var $def_id;
    9.     var $name;
    10.     var $type;
    11.     var $mask;
    12.     var $editable;
    13.     var $selection;
    14.     var $lastError;
    15.     var $isError;
    16.     var $notFound;
    17.  
    18.     function AttributeDef($id) {
    19.         $this->isError = false;
    20.         $this->noFound = false;
    21.  
    22.         if (is_numeric($id)) {
    23.             if (!$attributeDef = $this->getFromDB("*", "id=".$id)) return;
    24.         }
    25.         else if (is_array($id)) {
    26.             $attributeDef = $id;
    27.         }
    28.         //get something like static object
    29.         else if($id=="static"){
    30.             //do nothing
    31.         }
    32.         else {
    33.             $this->isError = true;
    34.             $this->lastError = getMessage('bad_id')."id=".$id;
    35.             return;
    36.         }
    37.  
    38.         $this->def_id = $attributeDef['id'];
    39.         $this->name = $attributeDef['name'];
    40.         $this->type = $attributeDef['attributetype'];
    41.         $this->mask = $attributeDef['mask'];
    42.         $this->editable = $attributeDef['editable'];
    43.     }
    44.  
    45.     // private
    46.     function getFromDB($column,$where,$from="attributesDef",$isFatal=true, $multiple = false) {
    47.         if ($multiple) {
    48.             $result = select('SELECT '.$column.' FROM '.$from.' WHERE '.$where);
    49.         }
    50.         else {
    51.             $result = singleResultSelect('SELECT '.$column.' FROM '.$from.' WHERE '.$where);
    52.         }
    53.  
    54.         if (!$result) {
    55.             if (($from == "attributesDef") && $isFatal) $this->lastError = getMessage('attribute_not_found')." : ".$where;
    56.             else  $this->lastError = getMessage('not_found').'SELECT '.$column.' FROM '.$from.' WHERE '.$where;
    57.             $this->notFound = true;
    58.             if ($isFatal) $this->isError = true;
    59.             return NULL;
    60.         }
    61.         elseif (!is_array($result)) {
    62.             $this->lastError = getMessage('db_error').$result." : ".'SELECT '.$column.' FROM '.$from.' WHERE '.$where;
    63.             if ($isFatal) $this->isError = true;
    64.             return NULL;
    65.         }
    66.         else return $result;
    67.     }
    68.  
    69.     // private
    70.     function updateDB($toSet,$table="attributesDef", $where = "id") {
    71.         if ($where == "id") $where .= "=".$this->id;
    72.         if ($error = write("UPDATE ".$table." SET ".$toSet." WHERE id=".$this->id)) {
    73.             $this->lastError = getMessage('db_write_error').$error." : "."UPDATE ".$table." SET ".$toSet." WHERE ".$where;
    74.             return false;
    75.         }
    76.         else return true;
    77.     }
    78.  
    79.  
    80.     //////////////////////////////////////////////////////////////////
    81.     // Getters
    82.     //////////////////////////////////////////////////////////////////
    83.  
    84.     function getAttributeDefID() {
    85.         return $this->def_id;
    86.     }
    87.  
    88.     function getName() {
    89.         return $this->name;
    90.     }
    91.  
    92.     function getType() {
    93.         return $this->type;
    94.     }
    95.  
    96.     function getValue() {
    97.         return NULL;
    98.     }
    99.  
    100.     function getMask() {
    101.         return $this->mask;
    102.     }
    103.  
    104.     function getEditable() {
    105.         return $this->editable;
    106.     }
    107.  
    108.     // Use Lazy loading for selection
    109.     function getSelection() {
    110.         if (!is_array($this->selection) && ($this->type >= 1 || $this->editable)) {
    111.             $dictionary = $this->getFromDB("value", "attributesdef_id=".$this->def_id." ORDER BY sortval,value", "attributesDefDict", true, true);
    112.             if (is_null($dictionary)){
    113.                 if($this->notFound) $this->lastError=null;
    114.                 return;
    115.             }
    116.             foreach ($dictionary as $value) {
    117.                 $this->selection[$value['value']] = false;
    118.             }
    119.         }
    120.         return $this->selection;
    121.     }
    122.  
    123.     function isError() {
    124.         return $this->isError;
    125.     }
    126.  
    127.  
    128.     function lastError() {
    129.         return $this->lastError;
    130.     }
    131.  
    132.     function notFound() {
    133.         return $this->NotFound;
    134.     }
    135.  
    136.     //////////////////////////////////////////////////////////////////
    137.     // Setters
    138.     //////////////////////////////////////////////////////////////////
    139.  
    140.     function buildAttribute ($node,$value) {
    141.         if ($this->type == 0) {
    142.             if (!ereg($this->mask,$value)) {
    143.                 $this->lastError = getMessage('invalide_value').$this->name." = ".$value;
    144.                 return false;
    145.             }
    146.         }
    147.         $insertQuery = "INSERT INTO Attributes (nodes_id,attributesdef_id,value)" .
    148.                             "VALUES (".$node->getID().",".$this->def_id.",'')";
    149.         if ($error = write($insertQuery)) {
    150.             $this->lastError = getMessage('db_error').$error." : ".$insertQuery;
    151.             return false;
    152.         }
    153.         if (!$result = $this->getFromDB("*","nodes_id=".$node->getID()." AND attributesdef_id=".$this->def_id,"attributes")) return false;
    154.             $attr = new Attribute($result);
    155.         if ($attr->isError()) {
    156.             $this->lastError = $attr->lastError();
    157.             return false;
    158.         }
    159.         $attr->setValue($value);
    160.         return $attr;
    161.     }
    162. /**
    163. * This function delete a specific value from the dictionary table (attributesdefdict)
    164. */
    165.     function deleteDictValue($value) {
    166.         $error = NULL;
    167.         delete("DELETE FROM attributesdefdict WHERE attributesdef_id=".$this->def_id." AND value=".qstr($value)."");
    168.         if ($error) $error.= " : ";
    169.         $error .= delete("DELETE FROM attributesdefdict WHERE attributesdef_id=".$this->def_id." AND value=".qstr($value)."");
    170.         return $error;
    171.     }
    172. /**
    173. * This function insert a specific value to the dictionary table (attributesdefdict)
    174. */
    175.     function insertDictValue($value) {
    176.         $error = NULL;
    177.         //Validation of value
    178.         if (!ereg($this->mask,$value)) {
    179.             $this->lastError = getMessage('invalide_value').$this->name." = ".$value."(".$this->mask.")";
    180.           return $this->lastError;
    181.         }
    182.         if (!(strlen($value) > 0)) {
    183.             $this->lastError = getMessage('error_creating_def').getMessage('empty_def_name');
    184.         return $this->lastError;
    185.         }
    186.         //sortval is not managed. New attribute list is always at last position
    187.         //$result = singleResultSelect("SELECT MAX(sortval) as nextsortval FROM attributesdefdict WHERE attributesdef_id=".$this->def_id);
    188.         //$sortval=1+$result['nextsortval'];
    189.         $sortval=0;
    190.         $insertQuery ="INSERT INTO attributesdefdict (attributesdef_id,value,sortval) VALUES (".$this->def_id.",".qstr($value).",".$sortval.")";
    191.         if ($error = write($insertQuery)) {
    192.             $this->lastError = getMessage('db_error').$error." : ".$insertQuery;
    193.             return $this->lastError;
    194.         }else{
    195.             return null;
    196.         }
    197.  
    198.     }
    199.  
    200. /**
    201. * This function update the dictionary table (attributesdefdict)
    202. * $oldValue is one of the primary key
    203. */
    204.     function updateDictValue($value,$oldValue) {
    205.         $error = NULL;
    206.         //Validation of value
    207.         if (!ereg($this->mask,$value)) {
    208.             $this->lastError = getMessage('invalide_value').$this->name." = ".$value."(".$this->mask.")";
    209.           return $this->lastError;
    210.         }
    211.         if (!(strlen($value) > 0)) {
    212.             $this->lastError = getMessage('error_creating_def').getMessage('empty_def_name');
    213.         return $this->lastError;
    214.         }
    215.         //sortval is not managed. New attribute list is always at last position
    216.         $updateQuery ="UPDATE attributesdefdict SET value=".qstr($value)." WHERE attributesdef_id=".$this->def_id." AND value=".qstr($oldValue)."";
    217.         if ($error = write($updateQuery)) {
    218.             $this->lastError = getMessage('db_write_error').$error." : ".$updateQuery;
    219.             return $this->lastError;
    220.         }else{
    221.             return $this->lastError;
    222.         }
    223.     }
    224.  
    225. }
    226. ?>