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ď č. 1preg_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ší.