[PHP] Preg Match e Uninitialized string offset

virus380

Nuovo Utente
9 Ago 2018
4
0
1
Ciao a tutti ragazzi,
Devo fare un programma che dati dei titoli dei libri,all' interno ci siano 2 o 3 numeri,
tra loro almeno una lettera e, il nuovo numero (successivo) deve essere il multiplo di quello che lo precede.

Funziona tutto ha solo due problemi (quindi non funziona al 100%)
Problemi:
1) Non funziona correttamente il preg_match ovvero funziona solo se metto almeno una lettera tra due numeri. esempio:
Funziona -> ooo 1 oo 4 oo 8 oo
NON funziona -> oo 1 4 oo 8 oo (vedete appena lascio uno spazio tra i due numeri già non funziona più) A me serve che ci deve essere sempre una lettera tra OGNI numero !

2) l'altro problema che ho è che visto che devo calcolare i multipli non so come togliere lo 0 dal terzo elemento, prima mi dava l'errore Uninitialized string offset sono riuscito a risolvere mettendo un empty davanti, ma comunque non riesco a dirgli che quando $INT[3] è uguale a 0 non deve mostrarmelo...

ecco il codice:

PHP:
function filtrolibri6($fascicolo1){
            foreach  ($fascicolo1 as $chiave1 => $valore1){
                if(preg_match('/[0-9].*[A-Za-z]{1}.*[0-9]/', $valore1)  == true){
                   $int = filter_var($valore1, FILTER_SANITIZE_NUMBER_INT);
                    if($int[0] <> 0 and $int[1] <> 0 ){
                          if($int[0] < $int[1] and empty($int[2])){
                          if($int[1] % $int[0] == 0 ){
                           $ok2[]= $chiave1 .'=>'. $valore1;
                        }
                          }
                          if($int[0] < $int[1] and !empty($int[2])){ 
                          
                          
                          if($int[2] % $int[1] == 0 ){           
                           $ok2[]= $chiave1.' '. ' => '. $valore1;
                        }     
                          } 
                      }       
                }
                
            }
            return $ok2;
}
$test2 = filtrolibri6($fascicolo1);
foreach($test2 as $chiave2 => $prova2){ 
    echo $prova2 . "<br>"; 
}


Come avete visto ho voluto fare l'echo all'esterno della funzione, perchè credo che sia più giusto.
Un altra cosa, da poco ho iniziato a cimentarmi sul php ma quali altri modi avevo per fare questo esercizio? Cioè mi pare che si possa fare solo con le regex o no?

Comunque vi ringrazio tantissimo se mi date una mano a risolvere quei due errori / imperfezioni.
 

virus380

Nuovo Utente
9 Ago 2018
4
0
1
Gente molto preparata vedo.

Il secondo punto posso capire, ma l espressioni regolari credevo che a qualcuno fosse più chiaro di me.
 

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.449
338
83
@virus380
Qui nessuno è obbligato a risponderti specialmente in una notte! Che sia chiaro!
Inoltre su questo forum non sono ammesse ironie e giudizi gratuiti buttati lì a caso e senza nessun fondamento.
Per tua conoscenza su questo forum è presente gente molto molto preparata che non ha problemi a rispondere a qualsiasi quesito e che non merita giudizi da uno che chiede aiuto per incompetenza!

Prima di tornare a scrivere leggi accuratamente il regolamento del forum e delle sezioni dove posti!
Primo avvertimento!
 

virus380

Nuovo Utente
9 Ago 2018
4
0
1
Hai ragione, Vi/chiedo Scusa.
Grazie per la seconda possibilità.

Se qualcuno sa aiutarmi lo ringrazio.

Utilizzando solo questa preg_match si accerta che ci sia una lettera tra ogni numero però vuole per forza 3 numeri...e non va bene perchè mi deve andare anche con soli due numeri
PHP:
[0-9].*[A-Za-z]{1}.[0-9].*[A-Za-z]{1}.*[0-9]
 

mr.x

Utente Attivo
9 Apr 2016
252
25
28
la regex per il controllo su questo schema-path "ooo 1 oo 4 oo 8 oo" di esempio

PHP:
/(\w.*?\d.+?){3}|(\w.+?\d.+?){2}/

per il secondo quesito se la regex è ok ti estrai le parti numeriche e fai il confronto per vedere se sono multiple di quelle a sinistra

PHP:
$stringa="aa 8 b 16ccc32";
$ris="";
if (preg_match('/(\w.*?\d.+?){3}|(\w.+?\d.+?){2}/', $stringa, $ris) ==true) {

$str=implode(" ", $ris);

preg_match_all('/\d.+?/', $str, $array);

$count=count($array[0]);

$n=0;

for($n=0; $n<$count; $n++) {
if ($n>0){
if ($array[0][$n]==($array[0][$n-1])*2)
echo $array[0][$n]."<br>";
}
}
 } else { echo " no match"; }
 
Discussioni simili
Autore Titolo Forum Risposte Data
A [PHP] Preg replace in preg replace callback PHP 2
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
M Array associativi php su 2 campi mysql PHP 10
G Invio form con PHP PHP 3

Discussioni simili