问题
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