Visualizzazione dei risultati da 1 a 5 su 5

Discussione: array e preg_match

  1. #1

    array e preg_match

    Questo codice piglia doppie da un array e controlla se c'é una doppia lettera su testo (facile, no?)
    Codice PHP:

    $codici
    =array("aa","bb","cc","dd","ee","ff","gg","hh","ii","ff");
    $testo="ciao";
    foreach(
    $codici as $codice) {if (preg_match("/$codice/i"$testo)){echo "c'é un doppio"; };}; 
    Il problema allora dov'è?

    Il ciclo foreach si passa il testo per ogni elemento dell'array.

    Se il testo é grosso, vai a controllarlo ogni volta...

    Boh.. Qualcosa mi dice che c'é una soluzione che pesa meno sul server.

    P.S. il controllo delle doppie é giusto un esempio. Dovrei fare un controllo su tag "proibiti".
    Se avessi voluto risolvere i problemi con la forza, sarei nato Jedi.

  2. #2
    Non credo ci sia un modo più veloce o che pesi meno!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  3. #3
    volendo puoi fare che quando trova il valore da te specificato esce dal ciclo e non esamina il resto, così magari se un testo è di 1MB ed il tuo carattere si trova all'inizio magari si esamina 50kb e non tutto.

    codice:
    foreach ($arr as $key=>$value){
      if (condizione){
        echo "trovato";
        break;
      }
    }

    poi, se devi solo trovare occorrenze puoi usare semplicemente strstr al posto delle preg che pesano un pò di più




    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  4. #4
    wow! é la prima volta che penso ad una soluzione che appare la migliore.. non so che dire... che emozione!

    Comunque ottima l'idea del break.
    Di più: ci posso mettere una frase di errore senza paura che venga duplicata x ogni condizione trovata.
    Se avessi voluto risolvere i problemi con la forza, sarei nato Jedi.

  5. #5
    probabilmente con le espressioni preg si può fare di meglio ma anche questo dovrebbe essere + veloce, le prove le lascio a te


    $codici=array("aa","bb","cc","dd","ee","ff","gg"," hh","ii","ff");
    $testo="ciao";
    $codice = '('.implode('|', $codici).')';
    preg_match("/$codice/", $testo)){
    echo "c'é un doppio";
    };

    ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.