Eregi - preg_match (joomla module - php modification)

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Cmg__
Δημοσιεύσεις: 1710
Εγγραφή: 29 Μαρ 2005 22:40

Eregi - preg_match (joomla module - php modification)

Δημοσίευση από Cmg__ » 29 Αύγ 2014 14:51

Καλησπέρα Φριστάφ,

έχω ένα παλιό Joomla site με flash carousel slideshow το 3d Matrix Gallery Module αν το ξέρετε.

Πρόσφατα είχα χοντρό πρόβλημα με το site επειδή έγινε 46 giga μονο του (!) και έφαγε suspended όπως ήταν λογικό από τον admin του plesk. Τελικά είχε ιο και με πολύ ζόρι και χωρίς βοήθεια από τον host το κατέβασα, το έστησα τοπικά, το καθάρισα και το ανέβασα σε έναν free server για δοκιμή. Πιθανόν για τον ιο να εμπλέκεται εταιρία εξτένσιονς οπότε προσοχή.

Το mod αυτό πρέπει να είναι γραμμένο παλιά σε php. Όταν το έστησα τοπικά μου πετούσε αυτό το σφάλμα:
Warning: Creating default object from empty value in C:\xampp\htdocs\tositemou\modules\mod_matrix3d_gallery\helper.php on line 88
Ένα Warning ανά εικόνα όπως παρατήρησα όμως έδειχνε το slideshow με όλες τις εικόνες κάτω απο τα warning.Δοκίμασα διαφορα αλλα δεν τα κατάφερα, πετούσε άλλα σφάλματα.

Ύστερα το ανέβασα όπως ήταν στον free server με την τελευταία έκδοση της PHP
και μου πεταξε αυτό το σφάλμα πολλές φορές (όσες οι εικόνες ή το i του foreach στην php?):
Deprecated: Function eregi() is deprecated in /home/to_sitemou/public_html/modules/mod_matrix3d_gallery/helper.php on line 87

και τέλος αυτά τα 2:
Function split() is deprecated in /home/tositemou/public_html/modules/mod_matrix3d_gallery/tmpl/default.php on line 11
Deprecated: Function split() is deprecated in /home/το_σαητ_ακι_μου**/public_html/modules/mod_matrix3d_gallery/tmpl/default.php on line 14

Απ'ότι έψαξα έπρεπε να αλλάξω το eregi σε preg_match με // και i για case insensitive λογω των αλλαγών στην καινούρια PHP.

Helper.php line 82-93

Κώδικας: Επιλογή όλων

             $i = 0;
             foreach ($files as $img)
             {
                if (!is_dir($dir .DS. $img))
                {
    **---->**             if (eregi($type, $img) || eregi($type1, $img)|| eregi($type2, $img)) {
                      $images[$i]->name   = $img;
                      $images[$i]->folder   = $folder;
                      ++$i;
                   }
                }
             }
Παρ'όλα αυτά οι μεταβλητές του eregi μες στο if δεν είναι αλφαρηθμητικα με "" για να βάλω /.../ και i όπως λέει και εδώ php.net/manual/en/function.eregi.php

Υστερα αντικατέστησα τα eregi με preg_match και άφησα τα υπόλοιπα ίδια στο helper.php , μου έβγαλε αυτό το σφάλμα πολλές φορές και έγραφε No Image στο τέλος:
Warning: preg_match(): Delimiter must not be alphanumeric or backslash in /home/u765900433/public_html/modules/mod_matrix3d_gallery/helper.php on line 87
καθώς δεν έπαιζε καν το slideshow.

Απ' ότι καταλαβαίνω είναι θέμα deprication δηλαδή να αντικαταστήσω σωστά τις καινούριες εκφράσεις στα php αλλα δυστυχώς είμαι καινούριος..

Παραθέτω και την αρχή του default.php που γίνονται οι δηλώσεις, καθώς τα πρώτα σφάλματα που βγήκαν τοπικά ανέφεραν και αυτό το αρχείο (lines 7-15)

Κώδικας: Επιλογή όλων

    $i = 0;
    $numr=count($images);

    $texto='cantidad='.$numr.'&carpeta='.$params->get('folder').'&row='.$params->get('row').'&colorbordes='.$params->get('colorbordes').'&colortextos='.$params->get('colortextos').'&vertical='.$params->get('vertical').'&zoom1='.$params->get('zoom1').'&zoom2='.$params->get('zoom2').'&target='.$params->get('target').'&onlink='.$params->get('onlink').'&speed='.$params->get('speed').'&mouseover='.$params->get('mouseover').'&alpha='.$params->get('alpha').'&menu1='.$params->get('menu1').'&menu2='.$params->get('menu2').'&menu3='.$params->get('menu3').'&menu4='.$params->get('menu4').'&menu5='.$params->get('menu5').'&menu6='.$params->get('menu6').'&menu7='.$params->get('menu7');
    $links=split("\n", $params->get('menulinks'));

    $link1=str_replace("&", "a1s2t3eriso", $params->get('imagesc'));
    $imagesc=split("\n", $link1);
    $conta=0;
Ευχαριστώ εκ των προτέρων και ελπίζω να με σώσετε τσακάλια :o :-? :roll: :lol: :pint: :evil:

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Eregi - preg_match (joomla module - php modification)

Δημοσίευση από gvre » 29 Αύγ 2014 15:43

Κώδικας: Επιλογή όλων

$imagesc=split("\n", $link1); 
θα γίνει

Κώδικας: Επιλογή όλων

$imagesc=explode("\n", $link1); 
Σχετικά με την eregi, δεν ξέρω τί ακριβώς περιέχει το type, αλλά λογικά το παρακάτω θα παίξει.

Κώδικας: Επιλογή όλων

if (preg_match('#('.$type . '|' . $type1 . '|' . $type2 . ')$#i', $img)) {

Cmg__
Δημοσιεύσεις: 1710
Εγγραφή: 29 Μαρ 2005 22:40

Eregi - preg_match (joomla module - php modification)

Δημοσίευση από Cmg__ » 29 Αύγ 2014 16:04

γρηγορος! το δοκιμαζω
EDIT: το δοκίμασα, δούλεψε , έφυγαν όλα τα σφάλματα, το slideshow παίζει..
Τελευταία επεξεργασία από το μέλος Cmg__ την 29 Αύγ 2014 16:09, έχει επεξεργασθεί 1 φορά συνολικά.

Cmg__
Δημοσιεύσεις: 1710
Εγγραφή: 29 Μαρ 2005 22:40

Eregi - preg_match (joomla module - php modification)

Δημοσίευση από Cmg__ » 29 Αύγ 2014 16:08

τι να πω φιλε είσαι σωτήρας!
μου έβγαλε τώρα ένα
Deprecated: Function split() is deprecated in /home/masayyt/public_html/modules/mod_matrix3d_gallery/tmpl/default.php on line 11
θα γίνει και αυτό explode ε;
ευχαριστώ κ πάλι

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Eregi - preg_match (joomla module - php modification)

Δημοσίευση από gvre » 29 Αύγ 2014 16:20

Όπου έχει split με delimiter (1ο όρισμα) που είναι απλό string (όχι κάποιο regex pattern) μπορείς να την αντικαταστήσεις με explode. Σε περίπτωση που έχεις regex θα χρειαστεί να χρησιμοποιήσεις την preg_split.
Εννοείται ότι δεν κάνεις update τα modules που πειράζεις, επειδή θα χάσεις τις αλλαγές.
Αν έχεις joomla 1.5 είναι προτιμότερο να μείνεις σε php 5.3.

Cmg__
Δημοσιεύσεις: 1710
Εγγραφή: 29 Μαρ 2005 22:40

Eregi - preg_match (joomla module - php modification)

Δημοσίευση από Cmg__ » 29 Αύγ 2014 16:26

το split δεν το έψαξα καν γιατί δεν έβρισκα άκρη με το preg_match , και να σου πω την αλήθεια ακόμα μου φαίνεται κάπως το δεύτερο.
με την php έχεις δίκιο απλά έπρεπε να μετακινηθώ σε καινούριο free server οπότε..
επιτέλους όλα κομπλέ, 3 μέρες μου πήρε με τους ιούς και τις μεταφορές.. τώρα έβγαλε και σφάλμα

Cmg__
Δημοσιεύσεις: 1710
Εγγραφή: 29 Μαρ 2005 22:40

Eregi - preg_match (joomla module - php modification)

Δημοσίευση από Cmg__ » 30 Αύγ 2014 17:58

Σε άλλο site μου που μετέφερα στον ίδιο server με το παραπάνω, που λύθηκε παρεπιπτόντως, μεε αυτήν την γραμμή

Κώδικας: Επιλογή όλων

            $menu_params = & new JParameter ($row->params);
βγάζει
Deprecated: Assigning the return value of new by reference is deprecated in /public_html/templates/jv_sello_III_v1.5.0/jv_menus/jv.common.php on line 61
αυτό το & new αλλάζει;

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Eregi - preg_match (joomla module - php modification)

Δημοσίευση από gvre » 30 Αύγ 2014 18:08

Σβήνοντας το & θα σταματήσει το error, αλλά δεν ξέρω αν θα επηρεαστεί κάτι άλλο στη λειτουργία τού site.

Cmg__
Δημοσιεύσεις: 1710
Εγγραφή: 29 Μαρ 2005 22:40

Eregi - preg_match (joomla module - php modification)

Δημοσίευση από Cmg__ » 31 Αύγ 2014 11:06

Έψαξα και βρήκα ότι πρέπει να σβήσεις μόνο το & και δούλεψε, αν και σε ένα refresh μου έκανε κάτι τρελά. τώρα δουλεύει από όλους τους browsers..
Ευχαριστώ.
Πρέπει να βγάλουμε ένα deprication εργαλείο να αντικαθιστά...

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 2 επισκέπτες