Функция ereg () устарела - PullRequest
       5

Функция ereg () устарела

1 голос
/ 16 августа 2010

Я прохожу свой код, чтобы заменить все экземпляры, которые я использую функцию ereg (), которую я использовал для сопоставления регулярных выражений внутри строки.

Я мог бы использовать небольшое направление, если у кого-то есть метод лучше, чем тот, который я использую.

Вот мой старый скрипт "проверки валюты":

    function valid_currency($number){
     if(ereg('^[0-9]+\.[0-9]{2}$', $number))
      return true;
     else
     return false;
    }

    if(valid_currency(25.30)){ 
          echo "valid currency"; 
   }else{ 
          echo "invalid currency string"; 
   }

Я заменил ereg () на preg_match ().

Я получаю эту ошибку сейчас:

Предупреждение: preg_match () [function.preg-match]: без конечного разделителя '^'

Я предполагаю, что синтаксис регулярного выражения не распознается. Отсюда я немного застрял.

Ответы [ 3 ]

5 голосов
/ 16 августа 2010

preg требует разделителей вокруг вашего регулярного выражения.Это может быть что угодно, хотя традиционно это /.Это должно работать:

preg_match('/^[0-9]+\.[0-9]{2}$/', $number)
0 голосов
/ 16 августа 2010

в preg_match () или preg_match_all () использует «разделители». Примеры:

/regEx/ or #regEx# or |regEx| or @regEx@.

Я использую: / regEx /

function valid_currency($n) { 
                    return preg_match("/^\d+\.\d{2}$/", $n);
        }

возвращает bool: 1 (true) 0(false)

пример использования:

echo valid_currency("25.30") ? 'valid currency' : 'invalid currency string';
0 голосов
/ 16 августа 2010

Вам нужны границы для выражения regex, т. Е. Он думает, что вы начинаете выражение с ^ и говорите, что нет конца ^, указывающего конец выраженияИспользуйте /^[0-9]+\.[0-9]{2}$/ вместо

...