Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [REGEXP] prendere un numero da una stringa

    salve

    ho fatto questo per estrapolare il numero (il primo) da una stringa:

    preg_replace("/([\d]+)/e","\$numero=$1;",$stringa);


    funziona ...ma mi sono accorto che $numero riporta il valore originario se in $stringa c'è una stringa senza numeri

    come posso correggere la regexp?

    potrei fare in modo poco elegante il raggiro: if($numero==$testo) $numero='';
    Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
    Inchinatevi difronte al Prof! Nacchio!

    A me pare che l'uomo vada avanti con la retromarcia

  2. #2
    forse così?

    preg_replace("/([\d]+)/e","if(!$1){\$numero='';}else{\$numero=$1;}",$stri nga);



    no così proprio no....

    1 raggiro funzionante è questo:
    preg_replace("/([\d]+)/e","\$numero=$1;",$stringa);
    if(!is_int($numero)) $numero='';



    certo che in REGEXP sarebbe più figo... :master:
    Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
    Inchinatevi difronte al Prof! Nacchio!

    A me pare che l'uomo vada avanti con la retromarcia

  3. #3
    if ( preg_match("/([\d]+)/e",$stringa))
    preg_replace("/([\d]+)/e","\$numero=$1;",$stringa);
    Chiamatemi sven se volete non ho voglia di fare una nuova email per una nuova registrazione xD
    Mac Future User , Ventilatore for PC Cooler user , - dry is coming -

  4. #4
    mmhhh, giusto, meglio così allora...

    if ( preg_match("/([\d]+)/e",$stringa)){
    preg_replace("/([\d]+)/e","\$numero=$1;",$stringa);
    }else{
    $numero='';
    }
    Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
    Inchinatevi difronte al Prof! Nacchio!

    A me pare che l'uomo vada avanti con la retromarcia

  5. #5
    Non occorre usare due funzioni, basta preg_match, e la regexp non ha bisogno di parentesi:

    Codice PHP:
    $stringa 'pi34ppo'
    if ( 
    preg_match('/\d+/',$stringa,$numero) )
        
    $numero $numero[0] ;
    else 
    $numero 'not a Number' ;

    echo 
    $numero 
    dA .. foto di viaggio
    L'esperienza è il tipo di insegnante più difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  6. #6
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Potrebbe andare anche così, magari e' un pochino "talebana" come alternativa rispetto alle signore regexp...

    Codice PHP:
    $str 'pi34ppo';

    echo 
    is_numeric($str{0}) ? 'is a number' 'not a number'

  7. #7
    torno a distanza di 1 anno... dopo aver riletto per 2 giorni le regole delle regexp, e sinceramente la mia prima sintassi non è affatto male, va solo rivista

    non
    preg_replace("/([\d]+)/e","\$numero=$1;",$stringa);

    ma
    preg_replace("/[\d]+/e","\$numero=$0;",$stringa);


    certo che se faccio
    echo preg_replace("/[\d]+/e","\$numero=$0;",$stringa);
    mi restituisce tutta la riga, ma difatti si dovrebbe fare:
    preg_replace("/[\d]+/e","\$numero=$0;",$stringa);
    echo $numero;



    Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
    Inchinatevi difronte al Prof! Nacchio!

    A me pare che l'uomo vada avanti con la retromarcia

  8. #8
    se voglio un numero decimale:

    preg_replace("/[\d]+[\.]?[\d]+/e","\$numero=$0;",$stringa);

    giusto?
    Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
    Inchinatevi difronte al Prof! Nacchio!

    A me pare che l'uomo vada avanti con la retromarcia

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.