[PHP] Recupero dati da un array

piero60

Utente Attivo
26 Gen 2015
71
2
8
Salve a tutti,
queste poche righe di codice estraggono solo i numeri
contenuti in una stringa e li mettono in un array.

PHP:
$str = 'sono in 11  e vado in 18';
$contenuto = preg_match_all('!\d+!', $str, $matches);
print_r($matches);

l'array generato dalla stringa introdotta è questo::
Array ( [0] => Array ( [0] => 11 [1] => 18 ) )

Se nella stringa ci sono alti numeri lui incrementerà l'array
per esempio [2] => 22 [3] => 19 ecc.ecc.

I dati vengono introdotti in un campo di testo, dove l'utente
scrive ciò che vuole.
Nel $str = è scritto qualcosa semplicemente per far vedere che il codice
identifica i numeri all'interno della stringa ed elimina tutto il resto.

Ho bisogno di mettere all'interno di alcune variabili
i contenuti dell'array

Esempio:
$a = il contenuto di [0] questo esiste sempre
$b = il contenuto di [1] da qui in poi possono esistere o non esistere i dati numerici
$c = il contenuto di [2] ecc.ecc.

Come si fa una cosa del genere?
Grazie per la collaborazione
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
ho seguito il tuo esempio
PHP:
<?php
$str = 'sono in 11  e vado in 18, poi provo 4';
$contenuto = preg_match_all('!\d+!', $str, $matches);

if ($contenuto > 0 )
{
    $car = "abcdefghijklmnopqrstuvwxyz";
    for($ind = 0; $ind < $contenuto; $ind++)
    {
        $nome = substr($car, $ind, 1);
        ${$nome} = $matches[0][$ind];
    }
    echo "a = ".$a."<br />";
    echo "b = ".$b."<br />";
    echo "c = ".$c."<br />";
}
else
{
    echo "sfortunatamente non ci sono numeri !";
}
?>
 

Rikk73

Utente Attivo
7 Apr 2015
141
6
18
Arezzo
Non credo che tu possa creare dinamicamente n variabili al bisogno, o sai a priori il numero massimo di valori che puoi accettare, e quindi valorizzi le relative variabili associate al campo, oppure, che se la puoi seguire è sicuramente la soluzione migliore, accedi direttamente all'array con l'indice
 

piero60

Utente Attivo
26 Gen 2015
71
2
8
Ciao Borgo Italia,
grazie per il codice che hai postato, purtroppo non mi risolve il
problema in quanto se si toglie uno dei tre numeri avviene un errore.
Ho formulato male la domanda, ci sono dei numeri introdotti in mezzo
al testo, questi numeri possono essere minimo 1 e massimo 2, e possono
essere composti da 1 cifra o da 2 cifre.
Questi parametri li ho introdotti adesso nel controllo del form
per evitare casini, ho limitato tutto a 2 numeri e non alla arbitrarietà dell'utente.

Poi ho risolto i controlli così:

PHP:
$spostamento = 'sono in 4 e vado in 71';
$cont = preg_match_all('!\d+!', $spostamento, $min_max);
if ($cont ==1 or $cont >1) {
$v1= ($min_max[0][0]);
$v1 = (int)$v1;
}   
if ($cont ==2 or $cont >2) {
$v2= ($min_max[0][1]);
$v2 = (int)$v2;
}else{
$v2 = $v1;
}

echo"primo $v1";
echo"<br><br>";
echo"secondo $v2";

In questo modo se l'utente inserisce un solo numero le 2 variabili
$v1 e $v2 assumono lo stesso valore, se esistono 2 numeri ogni variabile
conterrà il suo numero.

Non esiste il controllo di numero esistente in mezzo al testo in
quanto su questa porzione di codice si arriva solo se esiste
almeno un numero introdotto precedentemente.
Da qui in poi faccio i necessari test sulle 2 variabili per effettuare
il necessario.
Il codice non è elegantissimo ma svolge egregiamente il suo lavoro.
Buon pomeriggio ed ancora grazie.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intanto perche usare $a $b ecc.... secondo me sarebbe meglio usare un array.
poi riprendendo l'esempio di marino51 proverei a fare così (ho fatto una functio per essere comode a fare i test)
PHP:
<?php
function cerca_numeri($s){
    $contenuto = preg_match_all('!\d+!', $s, $matches);
    foreach($matches as $chiave => $valore){
        if(count($valore)==0){
            return "non ci sono numeri";
        }else{
            foreach($valore as $ch => $contiene){
                $a[]=$contiene;
            }
        }
    }
    return $a;
}
/* test *******- */
$str = 'sono in e vado in , poi provo ';
echo "<pre>";
var_dump(cerca_numeri($str));

$str = 'sono in 1 e vado in 3';
var_dump(cerca_numeri($str));

$str = 'sono in 1 e vado in 3, poi provo 5';
var_dump(cerca_numeri($str));
echo "<pre>";
?>
e questo è l'output
string(18) "non ci sono numeri"
array(2) {
[0]=>
string(1) "1"
[1]=>
string(1) "3"
}
array(3) {
[0]=>
string(1) "1"
[1]=>
string(1) "3"
[2]=>
string(1) "5"
}
 

piero60

Utente Attivo
26 Gen 2015
71
2
8
Ciao a tutti,
grazie per i post, i Vostri codici sono tutti OK, però visto che ho limitato come detto prima a 2 soli numeri le possibilità che l'utente ha, non mi complico la vita, lascio solo la riga che toglie tutti i caratteri e recupera solo i 2 valori numerici

""$cont = preg_match_all('!\d+!', $spostamento, $min_max);""

e poi gestisco i 2 dati ottenuti.

Grazie ancora e buona giornata a tutti.
 
Discussioni simili
Autore Titolo Forum Risposte Data
L Problema con recupero dati in PHP cURL e JAVA con server PHP 1
S [PHP] Recupero più dati da form realizzata ciclo FOR PHP 5
Alessio Gebbia [PHP] Recupero dati da un WHILE ! PHP 3
F errori sul recupero dati mysql e php PHP 3
T Problema recupero dati da file [era: help script php] PHP 9
M Recupero dati da pagina php PHP 2
S [PHP] Recupero nome immagine da Form con input file PHP 3
bubino8 [PHP] Recupero id autoincrement PHP 8
S [PHP] form con metodo get e recupero id PHP 4
Emix [PHP] Check - Select e recupero variabili PHP 40
bubino8 [PHP] Recupero input senza invio PHP 1
U [PHP] Selezione con menu a tendina e recupero selezione PHP 5
L PHP e recupero risultati da query PHP 2
L PHP e recupero risultati da query PHP 11
I Recupero numero file uploadati php PHP 1
L [PHP/MYSQL] Recupero campo USER e visualizzarlo nella tabella pagine PHP 13
A Accesso e recupero informazioni su db mysql e 2 tabelle. Php lento nell'esecuzione. PHP 4
L [PHP] Recupero valore dopo il submit PHP 1
P recupero variabile e invio a php Flash 5
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

Discussioni simili