Trasformare eregi in preg_match

di il
4 risposte

Trasformare eregi in preg_match

Ciao a tutti, chiedo aiuto per un programma che ha funzione eregi se sposto il programma in php 7 non funziona più perchè deprecato.
Non sono in programmatore e chiedo scusa per la mia incompetenza.
Chiedo aiuto per trasformare la parte eregi in preg_match
la parte del programma è questa

function is_spam($string) {
$data = "spamwords.dat";
$is_spam = false;
if (file_exists($data)) {
$spamword = file($data);
$jmlrec = count($spamword);
for ($i=0; $i<$jmlrec; $i++) {
$spamword[$i] = trim($spamword[$i]);
if (eregi($spamword[$i],$string)) {
$is_spam = true;
break;
}
}
}
return $is_spam;


ho provato a sostituire la riga così
if (preg_match('/$spamword[$i]/',$string)) {

ma va la pubblicazione dei moduli ma non va la funzione spamword che praticamente bloccava la pubblicazione di parole delicate come le parolacce

chiedo aiuto se possibile grazie a tutti per un possibile aiuto
serena

4 Risposte

  • Re: Trasformare eregi in preg_match

    Ciao buongiorno Seren.
    la regex di PCRE compatibile in php da eregi va trasformata in
    $regex = '/' . str_replace('/', '\\/', $spamword[$i]) . '/i';
    la i sta per senza distinzione tra maiuscole e minuscole. (Giustamente quando è dentro il primo parametro di preg_match), ovvio qui la variabile si chiama $regex e quindi il tuo if usa questo invece di modificare ulteriormente l'altra variabile.
  • Re: Trasformare eregi in preg_match

    Grazie, scusa ho provato meglio. in un primo momento mi sembrava funzionasse perchè avevo provato con il pubblicare una parola proibita da spamword ma in realtà non va più nessun modulo, se inserisco un modulo senza parolacce anche questo non viene pubblicato. Grazie se mi puoi aiutare ancora. O forse è tutto il resto del programma da rivedere nel cambio da php 5 alla versione 7... $regex può funzionare sulla 5 se faccio delle prove? perchè con la riga che mi hai indicato i moduli non vanno più né su versione 5 nè su versione 7. grazie sei stato gentilissimo a ripondermi.
  • Re: Trasformare eregi in preg_match

    [Code]function is_spam($string) { $data = "spamwords.dat"; $is_spam = false; if (file_exists($data)) { $spamword = file($data); $jmlrec = count($spamword); for ($i=0; $i<$jmlrec; $i++) { $spamword[$i] = trim($spamword[$i]); if (preg_match('/' . str_replace('/', '\\/', $spamword[$i]) . '/i',$string)) { $is_spam = true; break; } } } return $is_spam; } Stai utilizzando questa sintassi? (Compresa la quarta parentesi graffa di chiusura della funzione)
  • Re: Trasformare eregi in preg_match

    Grandioso! Grazie infinite Hormus! funziona tutto perfettamente dopo aver fatto copia e incolla del tuo testo. Grazie! va sia con il sito impostato in php 5 che con php 7. Grazie molto ti sono molto riconoscente! mi sto preparando per cambiare la versione al sito in php 7 e il tuo aiuto è stato importantissimo per me. Grazie ancora!!! Buona giornata. Serena
Devi accedere o registrarti per scrivere nel forum
4 risposte