[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.001
173
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
137
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.042
148
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 5
L [PHP] Recupero valore dopo il submit PHP 1
P recupero variabile e invio a php Flash 5
L Problemi form Pagina php HTML e CSS 2
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
F Il codice php è giusto? PHP 2
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
A invio massivo dati a file php Javascript 4
Z MySql injection PHP PHP 1
V PHP form intersecate PHP 0
I [Offro][Retribuito] Programmatore Php Offerte e Richieste di Lavoro e/o Collaborazione 0
P Funzione jQuery Ajax invio file a php jQuery 1
C Dopo chiusura del tag php la stringa html va a capo PHP 1
E Transaction php PHP 11
B ciclare file xml con PHP PHP 1
L Estrazione dati php Database 6
A Aiuto per pagina php PHP 0
E Php select option e ajax PHP 23
I Aiuto php Dependent Lookup PHP 0
T arretramento versione PHP... PHP 3
D problema php mysql PHP 1
D problema php mysql PHP 1
E Barra di avanzamento codice PHP PHP 4
G creazione menu a tendina e invio a pagina php PHP 1
A inserire variabile php colore in div html PHP 2
Z Video protetto con PHP PHP 0
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
I Eecuzione di javascript in ciclo foreach php. PHP 7
S Libreria PHP per creare file dwg o dxf PHP 0
A [cerco - retribuito] Sviluppatore Php freelance per progetti vari Offerte e Richieste di Lavoro e/o Collaborazione 2
L Google chart php mysql PHP 2
R Download file multipli da directory php PHP 0
F pagina dinamica PHP PHP 3

Discussioni simili