Функция eregi() устарела
Функция eregi() устарела. Как я могу заменить eregi(). Я пытаюсь использовать preg_match, но затем перестаю работать.
Я использую этическую помощь:
Http://takien.com/513/how-to-fix-function-eregi-is-deprecated-in-php-5-3-0.php
КОД ПЕРЕД:
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';
}
КОД, ЗАТЕМ:
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';
}
3 answers
preg_match
ожидает, что его аргумент регулярного выражения будет находиться в пределах пары разделителей.
Так что попробуйте:
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';
}
Похоже, вы просто забыли разделитель
preg_match("~/$~", $this->library_path)
И
preg_match("~gd2$~i", $protocol)
Но в обоих случаях вам следует подумать о том, чтобы не использовать регулярные выражения, потому что здесь они слишком велики
$this->library_path[strlen($this->library_path) - 1] == '/'
substr($protocol, -3) == 'gd2'
Если вы просто проверяете наличие одной строки внутри другой, вам следует просто использовать strpos()
функция. например:
if(strpos('convert', $this->library_path) !== false) {
// code here
}
Обновление: Неверно прочитано вы хотите проверить это в КОНЦЕ строки, это все еще возможно без регулярного выражения с помощью substr()
:
if(substr($this->library_path, -7) == 'convert' {
//code here
}
Где 7
- длина преобразования, вы можете использовать strlen и вычесть его из 0, чтобы получить это число динамически.
Это не приведет к запуску регулярных выражений, поэтому намного эффективнее.