Ma no, cosi' facendo usi la bellezza di 4 funzioni (stripos, substr, str_replace, preg_match) facendo fare allo script molto piu' lavoro di un semplice preg_match (che usi comunque, e l'accorciamento del pattern non fa assolutamente differenze percettibili, probabilmente neanche con dei benchmark).Originariamente inviato da Portabile84
se lo script si limitasse ad eseguire questo controllo quello che ti ho consigliato non cambierebbe molto per le risorse richieste dal tuo script ma immagino che prima e dopo vi siano altre richieste di elaborazione dati.Codice PHP:
//formato key
//$key = "3_16:54-18:30_teacher2planning_FK_teacher2module_id";
//echo "Key prima della troncatura". $key ."
";
//elimino tutto ciò che c'è dopo _teacher2planning_ e compreso _teache2planning_
$key = str_replace(substr($key, stripos($key, "_teacher2planning_")), "", $key);
// debug
//echo $key;
$rule = "/^[0-9]+_[0-9]{2}:[0-9]{2}-[0-9]{2}:[0-9]{2}$/";
if(preg_match($rule, $key)) echo "true";
preg_match è molto potente come funzione però è anche una delle tante del set dannattamente pesanti per il sistema. Prima ci abituiamo ad allegerire il software meglio è![]()
preg_match ed altre funzioni della stessa famiglia non sono affatto "dannatamente pesanti". Una str_replace e' piu' veloce di una preg_replace nel caso si lavori con testo letterale senza wildcard, ma e' una differenza che si puo' notare solo con benchmark precisi e su iterazioni di tante sostituzioni (dove per tante intendo nell'ordine di centinaia di migliaia). Per una ricerca o una sostituzione non c'e' all'atto pratico nessuna differenza.