Function ereg() is deprecated

六月ゝ 毕业季﹏ 提交于 2020-01-10 05:48:10

问题


I'm going through my code to replace any instances I'm using the ereg() function - which I was using for matching regex inside a string.

I could use a little direction, if someone has a better method than what I'm using.

Here's my old "currency validation" script:

    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"; 
   }

I replaced the ereg() with preg_match().

I'm getting this error now:

Warning: preg_match() [function.preg-match]: No ending delimiter '^'

I'm guessing the regular expression syntax isn't being recognized. From here I'm a little stuck.


回答1:


preg requires delimiters around your regex. It can be almost anything though traditionally it's /. This should work:

preg_match('/^[0-9]+\.[0-9]{2}$/', $number)



回答2:


You need the bounds for the regex statement, IE it's thinking you're starting the statement with ^ and saying there's no ending ^ indicating the end of the statement. Use /^[0-9]+\.[0-9]{2}$/ instead




回答3:


in preg_match() or preg_match_all() uses "delimiters".examples:

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

I use: /regEx/

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

returns bool: 1(true) 0(false)

exmaple of use:

echo valid_currency("25.30") ? 'valid currency' : 'invalid currency string';


来源:https://stackoverflow.com/questions/3489151/function-ereg-is-deprecated

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!