Function eregi() is deprecated [duplicate]

我们两清 提交于 2019-11-26 09:57:38

问题


This question already has an answer here:

  • How can I convert ereg expressions to preg in PHP? 4 answers

Function eregi() is deprecated. How can i replace eregi(). I try with preg_match but then stop working.

i us ethis help:

http://takien.com/513/how-to-fix-function-eregi-is-deprecated-in-php-5-3-0.php

CODE BEFORE:

if ( ! eregi(\"convert$\", $this->library_path))
        {
            if ( ! eregi(\"/$\", $this->library_path)) $this->library_path .= \"/\";

            $this->library_path .= \'convert\';
        }

if (eregi(\"gd2$\", $protocol))
        {
            $protocol = \'image_process_gd\';
        }

CODE THEN:

if ( ! preg_match(\"convert$/i\", $this->library_path))
        {
            if ( ! preg_match(\"/$/i\", $this->library_path)) $this->library_path .= \"/\";

            $this->library_path .= \'convert\';
        }

if (preg_match(\"gd2$/i\", $protocol))
        {
            $protocol = \'image_process_gd\';
        }

回答1:


preg_match expects its regex argument to be within a pair delimiters.

So try:

if ( ! preg_match("#convert$#i", $this->library_path)) {
        if ( ! preg_match("#/$#i", $this->library_path)) 
                $this->library_path .= "/";

        $this->library_path .= 'convert';
}

if (preg_match("#gd2$#i", $protocol)) {                                         
        $protocol = 'image_process_gd'; 
}     



回答2:


It seems you just forgot the Delimiter

preg_match("~/$~", $this->library_path)

and

preg_match("~gd2$~i", $protocol)

But in both cases you should consider not using regular expressions, because they are oversized here

$this->library_path[strlen($this->library_path) - 1] == '/'
substr($protocol, -3) == 'gd2'



回答3:


If you are just checking for the presence of one string inside another, you should just use the strpos() function. eg:

if(strpos('convert', $this->library_path) !== false) {
    // code here
}

Update: Misread you want to check for it at the END of a string, this is still possible without Regex by using substr():

if(substr($this->library_path, -7) == 'convert'  {
    //code here
}

Where 7 is the length of convert, you could use a strlen and subtract it from 0 to get this number dynamically. This won't start any regex so is much more efficient.



来源:https://stackoverflow.com/questions/5700806/function-eregi-is-deprecated

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