/ / Funkcia eregi () je zastaraná - php, regex, preg-match, eregi

Funkcia eregi () je zastaraná - php, regex, preg-match, eregi

Funkcia eregi () je zastaraná. Ako môžem nahradiť eregi (). Snažím sa s preg_match, ale potom prestám pracovať.

i my ethis pomoc:

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

KÓD PRED PRED:

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

KÓD POTREBY:

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

odpovede:

8 pre odpoveď č. 1

preg_match očakáva, že jeho argument regex bude v rámci oddeľovačov párov.

Skúste:

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 pre odpoveď č. 2

Zdá sa, že ste práve zabudli na oddeľovač

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

a

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

V obidvoch prípadoch by ste však nemali zvážiť použitie regulárnych výrazov, pretože sú tu príliš veľké

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

1 pre odpoveď č. 3

Ak práve kontrolujete prítomnosť jedného reťazca v inom, mali by ste použiť iba strpos() Funkcie. napr:

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

aktualizácia: Nesprávny údaj, ktorý chcete skontrolovať na konci reťazca, je to stále možné bez použitia Regex pomocou substr():

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

Kde 7 je dĺžka prevodu, môžete použiť strlen a odpočítať ju od 0, aby ste toto číslo dostali dynamicky. Tým sa nezačne žiadny regulárny výraz, takže je oveľa efektívnejší.